manson-hcs-3xxx: Fix use-after-free and memory leaks.
Thanks to Hannu Vuolasaho for the report!
This commit is contained in:
parent
e57057aee7
commit
6e799d0799
|
@ -145,12 +145,12 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
|
||||||
if (!strcmp(models[i].id, tokens[0]))
|
if (!strcmp(models[i].id, tokens[0]))
|
||||||
model_id = i;
|
model_id = i;
|
||||||
}
|
}
|
||||||
g_strfreev(tokens);
|
|
||||||
|
|
||||||
if (model_id < 0) {
|
if (model_id < 0) {
|
||||||
sr_err("Unknown model id '%s' detected, aborting.", tokens[0]);
|
sr_err("Unknown model ID '%s' detected, aborting.", tokens[0]);
|
||||||
|
g_strfreev(tokens);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
g_strfreev(tokens);
|
||||||
|
|
||||||
/* Init device instance, etc. */
|
/* Init device instance, etc. */
|
||||||
sdi = g_malloc0(sizeof(struct sr_dev_inst));
|
sdi = g_malloc0(sizeof(struct sr_dev_inst));
|
||||||
|
@ -173,8 +173,10 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
|
||||||
(hcs_read_reply(serial, 2, reply, sizeof(reply)) < 0))
|
(hcs_read_reply(serial, 2, reply, sizeof(reply)) < 0))
|
||||||
goto exit_err;
|
goto exit_err;
|
||||||
tokens = g_strsplit((const gchar *)&reply, "\r", 2);
|
tokens = g_strsplit((const gchar *)&reply, "\r", 2);
|
||||||
if (hcs_parse_volt_curr_mode(sdi, tokens) < 0)
|
if (hcs_parse_volt_curr_mode(sdi, tokens) < 0) {
|
||||||
|
g_strfreev(tokens);
|
||||||
goto exit_err;
|
goto exit_err;
|
||||||
|
}
|
||||||
g_strfreev(tokens);
|
g_strfreev(tokens);
|
||||||
|
|
||||||
/* Get max. voltage and current. */
|
/* Get max. voltage and current. */
|
||||||
|
|
Loading…
Reference in New Issue