Skip to content

Commit 84e2267

Browse files
committed
Set client error consistently in case of malformed packet
1 parent cfffbfa commit 84e2267

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
@@ -491,7 +491,7 @@ php_mysqlnd_greet_read(MYSQLND_CONN_DATA * conn, void * _packet)
491491

492492
DBG_RETURN(PASS);
493493
premature_end:
494-
DBG_ERR_FMT("GREET packet %zu bytes shorter than expected", p - begin - packet->header.size);
494+
SET_CLIENT_ERROR(error_info, CR_MALFORMED_PACKET, UNKNOWN_SQLSTATE, "Malformed packet");
495495
php_error_docref(NULL, E_WARNING, "GREET packet %zu bytes shorter than expected",
496496
p - begin - packet->header.size);
497497
DBG_RETURN(FAIL);
@@ -756,7 +756,7 @@ php_mysqlnd_auth_response_read(MYSQLND_CONN_DATA * conn, void * _packet)
756756

757757
DBG_RETURN(PASS);
758758
premature_end:
759-
DBG_ERR_FMT("OK packet %zu bytes shorter than expected", p - begin - packet->header.size);
759+
SET_CLIENT_ERROR(error_info, CR_MALFORMED_PACKET, UNKNOWN_SQLSTATE, "Malformed packet");
760760
php_error_docref(NULL, E_WARNING, "AUTH_RESPONSE packet %zu bytes shorter than expected",
761761
p - begin - packet->header.size);
762762
DBG_RETURN(FAIL);
@@ -893,7 +893,7 @@ php_mysqlnd_ok_read(MYSQLND_CONN_DATA * conn, void * _packet)
893893

894894
DBG_RETURN(PASS);
895895
premature_end:
896-
DBG_ERR_FMT("OK packet %zu bytes shorter than expected", p - begin - packet->header.size);
896+
SET_CLIENT_ERROR(error_info, CR_MALFORMED_PACKET, UNKNOWN_SQLSTATE, "Malformed packet");
897897
php_error_docref(NULL, E_WARNING, "OK packet %zu bytes shorter than expected",
898898
p - begin - packet->header.size);
899899
DBG_RETURN(FAIL);
@@ -980,7 +980,7 @@ php_mysqlnd_eof_read(MYSQLND_CONN_DATA * conn, void * _packet)
980980

981981
DBG_RETURN(PASS);
982982
premature_end:
983-
DBG_ERR_FMT("EOF packet %zu bytes shorter than expected", p - begin - packet->header.size);
983+
SET_CLIENT_ERROR(error_info, CR_MALFORMED_PACKET, UNKNOWN_SQLSTATE, "Malformed packet");
984984
php_error_docref(NULL, E_WARNING, "EOF packet %zu bytes shorter than expected",
985985
p - begin - packet->header.size);
986986
DBG_RETURN(FAIL);
@@ -1151,7 +1151,7 @@ php_mysqlnd_rset_header_read(MYSQLND_CONN_DATA * conn, void * _packet)
11511151

11521152
DBG_RETURN(ret);
11531153
premature_end:
1154-
DBG_ERR_FMT("RSET_HEADER packet %zu bytes shorter than expected", p - begin - packet->header.size);
1154+
SET_CLIENT_ERROR(error_info, CR_MALFORMED_PACKET, UNKNOWN_SQLSTATE, "Malformed packet");
11551155
php_error_docref(NULL, E_WARNING, "RSET_HEADER packet %zu bytes shorter than expected",
11561156
p - begin - packet->header.size);
11571157
DBG_RETURN(FAIL);
@@ -1229,7 +1229,7 @@ php_mysqlnd_rset_field_read(MYSQLND_CONN_DATA * conn, void * _packet)
12291229
DBG_RETURN(PASS);
12301230
} else if (EODATA_MARKER == *p && packet->header.size < 8) {
12311231
/* Premature EOF. That should be COM_FIELD_LIST. But we don't support COM_FIELD_LIST anymore, thus this should not happen */
1232-
DBG_ERR("Premature EOF. That should be COM_FIELD_LIST");
1232+
SET_CLIENT_ERROR(error_info, CR_MALFORMED_PACKET, UNKNOWN_SQLSTATE, "Malformed packet");
12331233
php_error_docref(NULL, E_WARNING, "Premature EOF in result field metadata");
12341234
DBG_RETURN(FAIL);
12351235
}
@@ -1245,12 +1245,11 @@ php_mysqlnd_rset_field_read(MYSQLND_CONN_DATA * conn, void * _packet)
12451245

12461246
/* 1 byte length */
12471247
if (UNEXPECTED(12 != *p)) {
1248-
DBG_ERR_FMT("Protocol error. Server sent false length. Expected 12 got %d", (int) *p);
1248+
SET_CLIENT_ERROR(error_info, CR_MALFORMED_PACKET, UNKNOWN_SQLSTATE, "Malformed packet");
12491249
php_error_docref(NULL, E_WARNING, "Protocol error. Server sent false length. Expected 12");
12501250
}
12511251

12521252
if ((size_t)((p - begin) + 12) > packet->header.size) {
1253-
php_error_docref(NULL, E_WARNING, "Premature end of data (mysqlnd_wireprotocol.c:%u)", __LINE__);
12541253
goto premature_end;
12551254
}
12561255

@@ -1349,12 +1348,12 @@ php_mysqlnd_rset_field_read(MYSQLND_CONN_DATA * conn, void * _packet)
13491348
DBG_RETURN(PASS);
13501349

13511350
faulty_or_fake:
1352-
DBG_ERR_FMT("Protocol error. Server sent NULL_LENGTH. The server is faulty");
1351+
SET_CLIENT_ERROR(error_info, CR_MALFORMED_PACKET, UNKNOWN_SQLSTATE, "Malformed packet");
13531352
php_error_docref(NULL, E_WARNING, "Protocol error. Server sent NULL_LENGTH."
13541353
" The server is faulty");
13551354
DBG_RETURN(FAIL);
13561355
premature_end:
1357-
DBG_ERR_FMT("RSET field packet %zu bytes shorter than expected", p - begin - packet->header.size);
1356+
SET_CLIENT_ERROR(error_info, CR_MALFORMED_PACKET, UNKNOWN_SQLSTATE, "Malformed packet");
13581357
php_error_docref(NULL, E_WARNING, "Result set field packet %zu bytes "
13591358
"shorter than expected", p - begin - packet->header.size);
13601359
DBG_RETURN(FAIL);
@@ -1896,7 +1895,7 @@ php_mysqlnd_prepare_read(MYSQLND_CONN_DATA * conn, void * _packet)
18961895

18971896
DBG_RETURN(PASS);
18981897
premature_end:
1899-
DBG_ERR_FMT("PREPARE packet %zu bytes shorter than expected", p - begin - packet->header.size);
1898+
SET_CLIENT_ERROR(error_info, CR_MALFORMED_PACKET, UNKNOWN_SQLSTATE, "Malformed packet");
19001899
php_error_docref(NULL, E_WARNING, "PREPARE packet %zu bytes shorter than expected",
19011900
p - begin - packet->header.size);
19021901
DBG_RETURN(FAIL);
@@ -1966,7 +1965,7 @@ php_mysqlnd_chg_user_read(MYSQLND_CONN_DATA * conn, void * _packet)
19661965

19671966
DBG_RETURN(PASS);
19681967
premature_end:
1969-
DBG_ERR_FMT("CHANGE_USER packet %zu bytes shorter than expected", p - begin - packet->header.size);
1968+
SET_CLIENT_ERROR(error_info, CR_MALFORMED_PACKET, UNKNOWN_SQLSTATE, "Malformed packet");
19701969
php_error_docref(NULL, E_WARNING, "CHANGE_USER packet %zu bytes shorter than expected",
19711970
p - begin - packet->header.size);
19721971
DBG_RETURN(FAIL);
@@ -2050,7 +2049,7 @@ php_mysqlnd_sha256_pk_request_response_read(MYSQLND_CONN_DATA * conn, void * _pa
20502049
DBG_RETURN(PASS);
20512050

20522051
premature_end:
2053-
DBG_ERR_FMT("OK packet %zu bytes shorter than expected", p - begin - packet->header.size);
2052+
SET_CLIENT_ERROR(error_info, CR_MALFORMED_PACKET, UNKNOWN_SQLSTATE, "Malformed packet");
20542053
php_error_docref(NULL, E_WARNING, "SHA256_PK_REQUEST_RESPONSE packet %zu bytes shorter than expected",
20552054
p - begin - packet->header.size);
20562055
DBG_RETURN(FAIL);
@@ -2163,7 +2162,7 @@ php_mysqlnd_cached_sha2_result_read(MYSQLND_CONN_DATA * conn, void * _packet)
21632162
DBG_RETURN(PASS);
21642163

21652164
premature_end:
2166-
DBG_ERR_FMT("OK packet %zu bytes shorter than expected", p - begin - packet->header.size);
2165+
SET_CLIENT_ERROR(error_info, CR_MALFORMED_PACKET, UNKNOWN_SQLSTATE, "Malformed packet");
21672166
php_error_docref(NULL, E_WARNING, "SHA256_PK_REQUEST_RESPONSE packet %zu bytes shorter than expected",
21682167
p - begin - packet->header.size);
21692168
DBG_RETURN(FAIL);

0 commit comments

Comments
 (0)