86
86
# ifndef O_NOFOLLOW
87
87
# define O_NOFOLLOW 0
88
88
# endif
89
+ #define SESS_FILE_BUF_SIZE (sz ) ((unsigned int)(sz > INT_MAX ? INT_MAX : (unsigned int)sz))
89
90
#endif
90
91
91
92
typedef struct {
@@ -246,7 +247,7 @@ static zend_result ps_files_write(ps_files *data, zend_string *key, zend_string
246
247
lseek (data -> fd , 0 , SEEK_SET );
247
248
#ifdef PHP_WIN32
248
249
{
249
- unsigned int to_write = ZSTR_LEN ( val ) > UINT_MAX ? UINT_MAX : ( unsigned int ) ZSTR_LEN (val );
250
+ unsigned int to_write = SESS_FILE_BUF_SIZE ( ZSTR_LEN (val ) );
250
251
char * buf = ZSTR_VAL (val );
251
252
int wrote ;
252
253
@@ -255,7 +256,7 @@ static zend_result ps_files_write(ps_files *data, zend_string *key, zend_string
255
256
256
257
n += wrote ;
257
258
buf = wrote > -1 ? buf + wrote : 0 ;
258
- to_write = wrote > -1 ? (ZSTR_LEN (val ) - n > UINT_MAX ? UINT_MAX : ( unsigned int )( ZSTR_LEN ( val ) - n )) : 0 ;
259
+ to_write = wrote > -1 ? SESS_FILE_BUF_SIZE (ZSTR_LEN (val ) - n ) : 0 ;
259
260
260
261
} while (wrote > 0 );
261
262
}
@@ -493,7 +494,7 @@ PS_READ_FUNC(files)
493
494
lseek (data -> fd , 0 , SEEK_SET );
494
495
#ifdef PHP_WIN32
495
496
{
496
- unsigned int to_read = ZSTR_LEN ( * val ) > UINT_MAX ? UINT_MAX : ( unsigned int ) ZSTR_LEN (* val );
497
+ unsigned int to_read = SESS_FILE_BUF_SIZE ( ZSTR_LEN (* val ) );
497
498
char * buf = ZSTR_VAL (* val );
498
499
int read_in ;
499
500
@@ -502,7 +503,7 @@ PS_READ_FUNC(files)
502
503
503
504
n += read_in ;
504
505
buf = read_in > -1 ? buf + read_in : 0 ;
505
- to_read = read_in > -1 ? (ZSTR_LEN (* val ) - n > UINT_MAX ? UINT_MAX : ( unsigned int )( ZSTR_LEN ( * val ) - n )) : 0 ;
506
+ to_read = read_in > -1 ? SESS_FILE_BUF_SIZE (ZSTR_LEN (* val ) - n ) : 0 ;
506
507
507
508
} while (read_in > 0 );
508
509
0 commit comments