Fixed empty string crash in mosquitto_property_copy_all

Signed-off-by: Alexander Fiebig <alex.fiebig@online.de>
This commit is contained in:
Alexander Fiebig 2022-10-08 19:08:21 +02:00
parent 5c3c5d779f
commit 28416da47a

View File

@ -1248,7 +1248,7 @@ int mosquitto_property_copy_all(mosquitto_property **dest, const mosquitto_prope
case MQTT_PROP_SERVER_REFERENCE: case MQTT_PROP_SERVER_REFERENCE:
case MQTT_PROP_REASON_STRING: case MQTT_PROP_REASON_STRING:
pnew->value.s.len = src->value.s.len; pnew->value.s.len = src->value.s.len;
pnew->value.s.v = strdup(src->value.s.v); pnew->value.s.v = src->value.s.v ? strdup(src->value.s.v) : (char*)calloc(1,1);
if(!pnew->value.s.v){ if(!pnew->value.s.v){
mosquitto_property_free_all(dest); mosquitto_property_free_all(dest);
return MOSQ_ERR_NOMEM; return MOSQ_ERR_NOMEM;
@ -1268,14 +1268,14 @@ int mosquitto_property_copy_all(mosquitto_property **dest, const mosquitto_prope
case MQTT_PROP_USER_PROPERTY: case MQTT_PROP_USER_PROPERTY:
pnew->value.s.len = src->value.s.len; pnew->value.s.len = src->value.s.len;
pnew->value.s.v = strdup(src->value.s.v); pnew->value.s.v = src->value.s.v ? strdup(src->value.s.v) : (char*)calloc(1,1);
if(!pnew->value.s.v){ if(!pnew->value.s.v){
mosquitto_property_free_all(dest); mosquitto_property_free_all(dest);
return MOSQ_ERR_NOMEM; return MOSQ_ERR_NOMEM;
} }
pnew->name.len = src->name.len; pnew->name.len = src->name.len;
pnew->name.v = strdup(src->name.v); pnew->name.v = src->name.v ? strdup(src->name.v) : (char*)calloc(1,1);
if(!pnew->name.v){ if(!pnew->name.v){
mosquitto_property_free_all(dest); mosquitto_property_free_all(dest);
return MOSQ_ERR_NOMEM; return MOSQ_ERR_NOMEM;