X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=session_file.c;h=ec98065d2c8f052a89630eb1ddb7ec6344da50a4;hb=94799bc4dc6ab1ba64cdb7f0fb350d63d4fcee66;hp=764cb68fde38f05b1d6adf7e7589ad4525861016;hpb=b08024a8363c7a019bebc05a25e2689e774326e8;p=libsigrok.git diff --git a/session_file.c b/session_file.c index 764cb68f..ec98065d 100644 --- a/session_file.c +++ b/session_file.c @@ -66,7 +66,12 @@ int sr_session_load(const char *filename) sr_dbg("Not a valid sigrok session file."); return SR_ERR; } - metafile = g_malloc(zs.size); + + if (!(metafile = g_try_malloc(zs.size))) { + sr_err("session file: %s: metafile malloc failed", __func__); + return SR_ERR_MALLOC; + } + zf = zip_fopen_index(archive, zs.index, 0); zip_fread(zf, metafile, zs.size); zip_fclose(zf); @@ -102,7 +107,7 @@ int sr_session_load(const char *filename) device->plugin->set_configuration(devcnt, SR_HWCAP_CAPTUREFILE, val); g_ptr_array_add(capturefiles, val); } else if (!strcmp(keys[j], "samplerate")) { - tmp_u64 = sr_parse_sizestring(val); + sr_parse_sizestring(val, &tmp_u64); device->plugin->set_configuration(devcnt, SR_HWCAP_SAMPLERATE, &tmp_u64); } else if (!strcmp(keys[j], "unitsize")) { tmp_u64 = strtoull(val, NULL, 10);