8686# ifndef O_NOFOLLOW
8787# define O_NOFOLLOW 0
8888# endif
89+ #define SESS_FILE_BUF_SIZE (sz ) ((unsigned int)(sz > INT_MAX ? INT_MAX : (unsigned int)sz))
8990#endif
9091
9192typedef struct {
@@ -246,7 +247,7 @@ static zend_result ps_files_write(ps_files *data, zend_string *key, zend_string
246247 lseek (data -> fd , 0 , SEEK_SET );
247248#ifdef PHP_WIN32
248249 {
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 ) );
250251 char * buf = ZSTR_VAL (val );
251252 int wrote ;
252253
@@ -255,7 +256,7 @@ static zend_result ps_files_write(ps_files *data, zend_string *key, zend_string
255256
256257 n += wrote ;
257258 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 ;
259260
260261 } while (wrote > 0 );
261262 }
@@ -493,7 +494,7 @@ PS_READ_FUNC(files)
493494 lseek (data -> fd , 0 , SEEK_SET );
494495#ifdef PHP_WIN32
495496 {
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 ) );
497498 char * buf = ZSTR_VAL (* val );
498499 int read_in ;
499500
@@ -502,7 +503,7 @@ PS_READ_FUNC(files)
502503
503504 n += read_in ;
504505 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 ;
506507
507508 } while (read_in > 0 );
508509
0 commit comments