Skip to content

Commit 92dcb8e

Browse files
committed
Set client error consistently in case of malformed packet
1 parent dba5bbb commit 92dcb8e

File tree

1 file changed

+13
-14
lines changed

1 file changed

+13
-14
lines changed

ext/mysqlnd/mysqlnd_wireprotocol.c

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -468,7 +468,7 @@ php_mysqlnd_greet_read(MYSQLND_CONN_DATA * conn, void * _packet)
468468

469469
DBG_RETURN(PASS);
470470
premature_end:
471-
DBG_ERR_FMT("GREET packet %zu bytes shorter than expected", p - begin - packet->header.size);
471+
SET_CLIENT_ERROR(error_info, CR_MALFORMED_PACKET, UNKNOWN_SQLSTATE, "Malformed packet");
472472
php_error_docref(NULL, E_WARNING, "GREET packet %zu bytes shorter than expected",
473473
p - begin - packet->header.size);
474474
DBG_RETURN(FAIL);
@@ -726,7 +726,7 @@ php_mysqlnd_auth_response_read(MYSQLND_CONN_DATA * conn, void * _packet)
726726

727727
DBG_RETURN(PASS);
728728
premature_end:
729-
DBG_ERR_FMT("OK packet %zu bytes shorter than expected", p - begin - packet->header.size);
729+
SET_CLIENT_ERROR(error_info, CR_MALFORMED_PACKET, UNKNOWN_SQLSTATE, "Malformed packet");
730730
php_error_docref(NULL, E_WARNING, "AUTH_RESPONSE packet %zu bytes shorter than expected",
731731
p - begin - packet->header.size);
732732
DBG_RETURN(FAIL);
@@ -863,7 +863,7 @@ php_mysqlnd_ok_read(MYSQLND_CONN_DATA * conn, void * _packet)
863863

864864
DBG_RETURN(PASS);
865865
premature_end:
866-
DBG_ERR_FMT("OK packet %zu bytes shorter than expected", p - begin - packet->header.size);
866+
SET_CLIENT_ERROR(error_info, CR_MALFORMED_PACKET, UNKNOWN_SQLSTATE, "Malformed packet");
867867
php_error_docref(NULL, E_WARNING, "OK packet %zu bytes shorter than expected",
868868
p - begin - packet->header.size);
869869
DBG_RETURN(FAIL);
@@ -950,7 +950,7 @@ php_mysqlnd_eof_read(MYSQLND_CONN_DATA * conn, void * _packet)
950950

951951
DBG_RETURN(PASS);
952952
premature_end:
953-
DBG_ERR_FMT("EOF packet %zu bytes shorter than expected", p - begin - packet->header.size);
953+
SET_CLIENT_ERROR(error_info, CR_MALFORMED_PACKET, UNKNOWN_SQLSTATE, "Malformed packet");
954954
php_error_docref(NULL, E_WARNING, "EOF packet %zu bytes shorter than expected",
955955
p - begin - packet->header.size);
956956
DBG_RETURN(FAIL);
@@ -1110,7 +1110,7 @@ php_mysqlnd_rset_header_read(MYSQLND_CONN_DATA * conn, void * _packet)
11101110

11111111
DBG_RETURN(ret);
11121112
premature_end:
1113-
DBG_ERR_FMT("RSET_HEADER packet %zu bytes shorter than expected", p - begin - packet->header.size);
1113+
SET_CLIENT_ERROR(error_info, CR_MALFORMED_PACKET, UNKNOWN_SQLSTATE, "Malformed packet");
11141114
php_error_docref(NULL, E_WARNING, "RSET_HEADER packet %zu bytes shorter than expected",
11151115
p - begin - packet->header.size);
11161116
DBG_RETURN(FAIL);
@@ -1188,7 +1188,7 @@ php_mysqlnd_rset_field_read(MYSQLND_CONN_DATA * conn, void * _packet)
11881188
DBG_RETURN(PASS);
11891189
} else if (EODATA_MARKER == *p && packet->header.size < 8) {
11901190
/* Premature EOF. That should be COM_FIELD_LIST. But we don't support COM_FIELD_LIST anymore, thus this should not happen */
1191-
DBG_ERR("Premature EOF. That should be COM_FIELD_LIST");
1191+
SET_CLIENT_ERROR(error_info, CR_MALFORMED_PACKET, UNKNOWN_SQLSTATE, "Malformed packet");
11921192
php_error_docref(NULL, E_WARNING, "Premature EOF in result field metadata");
11931193
DBG_RETURN(FAIL);
11941194
}
@@ -1204,12 +1204,11 @@ php_mysqlnd_rset_field_read(MYSQLND_CONN_DATA * conn, void * _packet)
12041204

12051205
/* 1 byte length */
12061206
if (UNEXPECTED(12 != *p)) {
1207-
DBG_ERR_FMT("Protocol error. Server sent false length. Expected 12 got %d", (int) *p);
1207+
SET_CLIENT_ERROR(error_info, CR_MALFORMED_PACKET, UNKNOWN_SQLSTATE, "Malformed packet");
12081208
php_error_docref(NULL, E_WARNING, "Protocol error. Server sent false length. Expected 12");
12091209
}
12101210

12111211
if ((size_t)((p - begin) + 12) > packet->header.size) {
1212-
php_error_docref(NULL, E_WARNING, "Premature end of data (mysqlnd_wireprotocol.c:%u)", __LINE__);
12131212
goto premature_end;
12141213
}
12151214

@@ -1315,12 +1314,12 @@ php_mysqlnd_rset_field_read(MYSQLND_CONN_DATA * conn, void * _packet)
13151314
DBG_RETURN(PASS);
13161315

13171316
faulty_or_fake:
1318-
DBG_ERR_FMT("Protocol error. Server sent NULL_LENGTH. The server is faulty");
1317+
SET_CLIENT_ERROR(error_info, CR_MALFORMED_PACKET, UNKNOWN_SQLSTATE, "Malformed packet");
13191318
php_error_docref(NULL, E_WARNING, "Protocol error. Server sent NULL_LENGTH."
13201319
" The server is faulty");
13211320
DBG_RETURN(FAIL);
13221321
premature_end:
1323-
DBG_ERR_FMT("RSET field packet %zu bytes shorter than expected", p - begin - packet->header.size);
1322+
SET_CLIENT_ERROR(error_info, CR_MALFORMED_PACKET, UNKNOWN_SQLSTATE, "Malformed packet");
13241323
php_error_docref(NULL, E_WARNING, "Result set field packet %zu bytes "
13251324
"shorter than expected", p - begin - packet->header.size);
13261325
DBG_RETURN(FAIL);
@@ -1844,7 +1843,7 @@ php_mysqlnd_prepare_read(MYSQLND_CONN_DATA * conn, void * _packet)
18441843

18451844
DBG_RETURN(PASS);
18461845
premature_end:
1847-
DBG_ERR_FMT("PREPARE packet %zu bytes shorter than expected", p - begin - packet->header.size);
1846+
SET_CLIENT_ERROR(error_info, CR_MALFORMED_PACKET, UNKNOWN_SQLSTATE, "Malformed packet");
18481847
php_error_docref(NULL, E_WARNING, "PREPARE packet %zu bytes shorter than expected",
18491848
p - begin - packet->header.size);
18501849
DBG_RETURN(FAIL);
@@ -1914,7 +1913,7 @@ php_mysqlnd_chg_user_read(MYSQLND_CONN_DATA * conn, void * _packet)
19141913

19151914
DBG_RETURN(PASS);
19161915
premature_end:
1917-
DBG_ERR_FMT("CHANGE_USER packet %zu bytes shorter than expected", p - begin - packet->header.size);
1916+
SET_CLIENT_ERROR(error_info, CR_MALFORMED_PACKET, UNKNOWN_SQLSTATE, "Malformed packet");
19181917
php_error_docref(NULL, E_WARNING, "CHANGE_USER packet %zu bytes shorter than expected",
19191918
p - begin - packet->header.size);
19201919
DBG_RETURN(FAIL);
@@ -1998,7 +1997,7 @@ php_mysqlnd_sha256_pk_request_response_read(MYSQLND_CONN_DATA * conn, void * _pa
19981997
DBG_RETURN(PASS);
19991998

20001999
premature_end:
2001-
DBG_ERR_FMT("OK packet %zu bytes shorter than expected", p - begin - packet->header.size);
2000+
SET_CLIENT_ERROR(error_info, CR_MALFORMED_PACKET, UNKNOWN_SQLSTATE, "Malformed packet");
20022001
php_error_docref(NULL, E_WARNING, "SHA256_PK_REQUEST_RESPONSE packet %zu bytes shorter than expected",
20032002
p - begin - packet->header.size);
20042003
DBG_RETURN(FAIL);
@@ -2111,7 +2110,7 @@ php_mysqlnd_cached_sha2_result_read(MYSQLND_CONN_DATA * conn, void * _packet)
21112110
DBG_RETURN(PASS);
21122111

21132112
premature_end:
2114-
DBG_ERR_FMT("OK packet %zu bytes shorter than expected", p - begin - packet->header.size);
2113+
SET_CLIENT_ERROR(error_info, CR_MALFORMED_PACKET, UNKNOWN_SQLSTATE, "Malformed packet");
21152114
php_error_docref(NULL, E_WARNING, "SHA256_PK_REQUEST_RESPONSE packet %zu bytes shorter than expected",
21162115
p - begin - packet->header.size);
21172116
DBG_RETURN(FAIL);

0 commit comments

Comments
 (0)