@@ -323,35 +323,28 @@ mysqlnd_read_packet_header_and_body(MYSQLND_PACKET_HEADER * packet_header,
323
323
static enum_func_status
324
324
php_mysqlnd_greet_read (MYSQLND_CONN_DATA * conn , void * _packet )
325
325
{
326
- zend_uchar buf [2048 ];
327
- const zend_uchar * p = buf ;
328
- const zend_uchar * const begin = buf ;
329
326
const zend_uchar * pad_start = NULL ;
330
327
MYSQLND_PACKET_GREET * packet = (MYSQLND_PACKET_GREET * ) _packet ;
331
328
MYSQLND_ERROR_INFO * error_info = conn -> error_info ;
332
329
MYSQLND_PFC * pfc = conn -> protocol_frame_codec ;
333
330
MYSQLND_VIO * vio = conn -> vio ;
334
331
MYSQLND_STATS * stats = conn -> stats ;
335
332
MYSQLND_CONNECTION_STATE * connection_state = & conn -> state ;
333
+ const size_t buf_len = pfc -> cmd_buffer .length ;
334
+ zend_uchar * const buf = (zend_uchar * ) pfc -> cmd_buffer .buffer ;
335
+ const zend_uchar * p = buf ;
336
+ const zend_uchar * const begin = buf ;
336
337
337
338
DBG_ENTER ("php_mysqlnd_greet_read" );
338
339
339
- if (FAIL == mysqlnd_read_packet_header_and_body (& (packet -> header ), pfc , vio , stats , error_info , connection_state , buf , sizeof ( buf ) , "greeting" , PROT_GREET_PACKET )) {
340
+ if (FAIL == mysqlnd_read_packet_header_and_body (& (packet -> header ), pfc , vio , stats , error_info , connection_state , buf , buf_len , "greeting" , PROT_GREET_PACKET )) {
340
341
DBG_RETURN (FAIL );
341
342
}
342
343
BAIL_IF_NO_MORE_DATA ;
343
344
344
345
packet -> authentication_plugin_data .s = packet -> intern_auth_plugin_data ;
345
346
packet -> authentication_plugin_data .l = sizeof (packet -> intern_auth_plugin_data );
346
347
347
- if (packet -> header .size < sizeof (buf )) {
348
- /*
349
- Null-terminate the string, so strdup can work even if the packets have a string at the end,
350
- which is not ASCIIZ
351
- */
352
- buf [packet -> header .size ] = '\0' ;
353
- }
354
-
355
348
packet -> protocol_version = uint1korr (p );
356
349
p ++ ;
357
350
BAIL_IF_NO_MORE_DATA ;
@@ -642,8 +635,6 @@ size_t php_mysqlnd_auth_write(MYSQLND_CONN_DATA * conn, void * _packet)
642
635
/* }}} */
643
636
644
637
645
- #define AUTH_RESP_BUFFER_SIZE 2048
646
-
647
638
/* {{{ php_mysqlnd_auth_response_read */
648
639
static enum_func_status
649
640
php_mysqlnd_auth_response_read (MYSQLND_CONN_DATA * conn , void * _packet )
@@ -654,27 +645,18 @@ php_mysqlnd_auth_response_read(MYSQLND_CONN_DATA * conn, void * _packet)
654
645
MYSQLND_VIO * vio = conn -> vio ;
655
646
MYSQLND_STATS * stats = conn -> stats ;
656
647
MYSQLND_CONNECTION_STATE * connection_state = & conn -> state ;
657
- zend_uchar local_buf [AUTH_RESP_BUFFER_SIZE ];
658
- size_t buf_len = pfc -> cmd_buffer .buffer ? pfc -> cmd_buffer .length : AUTH_RESP_BUFFER_SIZE ;
659
- zend_uchar * buf = pfc -> cmd_buffer .buffer ? (zend_uchar * ) pfc -> cmd_buffer .buffer : local_buf ;
648
+ const size_t buf_len = pfc -> cmd_buffer .length ;
649
+ zend_uchar * const buf = (zend_uchar * ) pfc -> cmd_buffer .buffer ;
660
650
const zend_uchar * p = buf ;
661
651
const zend_uchar * const begin = buf ;
662
652
663
653
DBG_ENTER ("php_mysqlnd_auth_response_read" );
664
654
665
- /* leave space for terminating safety \0 */
666
- buf_len -- ;
667
655
if (FAIL == mysqlnd_read_packet_header_and_body (& (packet -> header ), pfc , vio , stats , error_info , connection_state , buf , buf_len , "OK" , PROT_OK_PACKET )) {
668
656
DBG_RETURN (FAIL );
669
657
}
670
658
BAIL_IF_NO_MORE_DATA ;
671
659
672
- /*
673
- zero-terminate the buffer for safety. We are sure there is place for the \0
674
- because buf_len is -1 the size of the buffer pointed
675
- */
676
- buf [packet -> header .size ] = '\0' ;
677
-
678
660
/* Should be always 0x0 or ERROR_MARKER for error */
679
661
packet -> response_code = uint1korr (p );
680
662
p ++ ;
@@ -806,8 +788,6 @@ php_mysqlnd_change_auth_response_write(MYSQLND_CONN_DATA * conn, void * _packet)
806
788
/* }}} */
807
789
808
790
809
- #define OK_BUFFER_SIZE 2048
810
-
811
791
/* {{{ php_mysqlnd_ok_read */
812
792
static enum_func_status
813
793
php_mysqlnd_ok_read (MYSQLND_CONN_DATA * conn , void * _packet )
@@ -818,9 +798,8 @@ php_mysqlnd_ok_read(MYSQLND_CONN_DATA * conn, void * _packet)
818
798
MYSQLND_VIO * vio = conn -> vio ;
819
799
MYSQLND_STATS * stats = conn -> stats ;
820
800
MYSQLND_CONNECTION_STATE * connection_state = & conn -> state ;
821
- zend_uchar local_buf [OK_BUFFER_SIZE ];
822
- const size_t buf_len = pfc -> cmd_buffer .buffer ? pfc -> cmd_buffer .length : OK_BUFFER_SIZE ;
823
- zend_uchar * const buf = pfc -> cmd_buffer .buffer ? (zend_uchar * ) pfc -> cmd_buffer .buffer : local_buf ;
801
+ const size_t buf_len = pfc -> cmd_buffer .length ;
802
+ zend_uchar * const buf = (zend_uchar * ) pfc -> cmd_buffer .buffer ;
824
803
const zend_uchar * p = buf ;
825
804
const zend_uchar * const begin = buf ;
826
805
zend_ulong net_len ;
@@ -1975,8 +1954,6 @@ size_t php_mysqlnd_sha256_pk_request_write(MYSQLND_CONN_DATA * conn, void * _pac
1975
1954
/* }}} */
1976
1955
1977
1956
1978
- #define SHA256_PK_REQUEST_RESP_BUFFER_SIZE 2048
1979
-
1980
1957
/* {{{ php_mysqlnd_sha256_pk_request_response_read */
1981
1958
static enum_func_status
1982
1959
php_mysqlnd_sha256_pk_request_response_read (MYSQLND_CONN_DATA * conn , void * _packet )
@@ -1987,14 +1964,15 @@ php_mysqlnd_sha256_pk_request_response_read(MYSQLND_CONN_DATA * conn, void * _pa
1987
1964
MYSQLND_VIO * vio = conn -> vio ;
1988
1965
MYSQLND_STATS * stats = conn -> stats ;
1989
1966
MYSQLND_CONNECTION_STATE * connection_state = & conn -> state ;
1990
- zend_uchar buf [SHA256_PK_REQUEST_RESP_BUFFER_SIZE ];
1991
- zend_uchar * p = buf ;
1967
+ const size_t buf_len = pfc -> cmd_buffer .length ;
1968
+ zend_uchar * const buf = (zend_uchar * ) pfc -> cmd_buffer .buffer ;
1969
+ const zend_uchar * p = buf ;
1992
1970
const zend_uchar * const begin = buf ;
1993
1971
1994
1972
DBG_ENTER ("php_mysqlnd_sha256_pk_request_response_read" );
1995
1973
1996
1974
/* leave space for terminating safety \0 */
1997
- if (FAIL == mysqlnd_read_packet_header_and_body (& (packet -> header ), pfc , vio , stats , error_info , connection_state , buf , sizeof ( buf ) , "SHA256_PK_REQUEST_RESPONSE" , PROT_SHA256_PK_REQUEST_RESPONSE_PACKET )) {
1975
+ if (FAIL == mysqlnd_read_packet_header_and_body (& (packet -> header ), pfc , vio , stats , error_info , connection_state , buf , buf_len , "SHA256_PK_REQUEST_RESPONSE" , PROT_SHA256_PK_REQUEST_RESPONSE_PACKET )) {
1998
1976
DBG_RETURN (FAIL );
1999
1977
}
2000
1978
BAIL_IF_NO_MORE_DATA ;
@@ -2068,12 +2046,13 @@ php_mysqlnd_cached_sha2_result_read(MYSQLND_CONN_DATA * conn, void * _packet)
2068
2046
MYSQLND_VIO * vio = conn -> vio ;
2069
2047
MYSQLND_STATS * stats = conn -> stats ;
2070
2048
MYSQLND_CONNECTION_STATE * connection_state = & conn -> state ;
2071
- zend_uchar buf [SHA256_PK_REQUEST_RESP_BUFFER_SIZE ];
2072
- zend_uchar * p = buf ;
2049
+ const size_t buf_len = pfc -> cmd_buffer .length ;
2050
+ zend_uchar * const buf = (zend_uchar * ) pfc -> cmd_buffer .buffer ;
2051
+ const zend_uchar * p = buf ;
2073
2052
const zend_uchar * const begin = buf ;
2074
2053
2075
2054
DBG_ENTER ("php_mysqlnd_cached_sha2_result_read" );
2076
- if (FAIL == mysqlnd_read_packet_header_and_body (& (packet -> header ), pfc , vio , stats , error_info , connection_state , buf , sizeof ( buf ) , "PROT_CACHED_SHA2_RESULT_PACKET" , PROT_CACHED_SHA2_RESULT_PACKET )) {
2055
+ if (FAIL == mysqlnd_read_packet_header_and_body (& (packet -> header ), pfc , vio , stats , error_info , connection_state , buf , buf_len , "PROT_CACHED_SHA2_RESULT_PACKET" , PROT_CACHED_SHA2_RESULT_PACKET )) {
2077
2056
DBG_RETURN (FAIL );
2078
2057
}
2079
2058
BAIL_IF_NO_MORE_DATA ;
0 commit comments