Incorrect PS metadata was being erased. Possible fix for #1428

v2.0-web2
René Cannaò 8 years ago
parent cb2fdc30a2
commit e003dcca72

@ -84,6 +84,8 @@ class stmt_execute_metadata_t {
unsigned long *lengths;
void *pkt;
stmt_execute_metadata_t() {
size = 0;
stmt_id = 0;
binds=NULL;
is_nulls=NULL;
lengths=NULL;
@ -92,10 +94,15 @@ class stmt_execute_metadata_t {
~stmt_execute_metadata_t() {
if (binds)
free(binds);
binds = NULL;
if (is_nulls)
free(is_nulls);
is_nulls = NULL;
if (lengths)
free(lengths);
lengths = NULL;
size = 0;
stmt_id = 0;
}
};

@ -2226,8 +2226,12 @@ __get_pkts_from_client:
uint32_t client_global_id=0;
memcpy(&client_global_id,(char *)pkt.ptr+5,sizeof(uint32_t));
// FIXME: no input validation
uint64_t stmt_global_id=0;
stmt_global_id=client_myds->myconn->local_stmts->find_global_stmt_id_from_client(client_global_id);
SLDH->reset(client_global_id);
sess_STMTs_meta->erase(client_global_id);
if (stmt_global_id) {
sess_STMTs_meta->erase(stmt_global_id);
}
client_myds->myconn->local_stmts->client_close(client_global_id);
}
l_free(pkt.size,pkt.ptr);

Loading…
Cancel
Save