X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=extras%2Ffirmware%2Ffirmware.c;h=76593bad3030cdfade41d1021ec5bab3f391a4ae;hb=d80f8ffd1a182fe7fff9816e8a4efc09e877964b;hp=16455dec8f3299ef2283ce1382ad1cb1d99a0cb4;hpb=86a7a2f853fe6022c5b0c1b415918047b65533be;p=elogind.git diff --git a/extras/firmware/firmware.c b/extras/firmware/firmware.c index 16455dec8..76593bad3 100644 --- a/extras/firmware/firmware.c +++ b/extras/firmware/firmware.c @@ -63,8 +63,10 @@ static bool copy_firmware(struct udev *udev, const char *source, const char *tar if (fwrite(buf, size, 1, ftarget) == 1) ret = true; exit: - fclose(ftarget); - fclose(fsource); + if (ftarget != NULL) + fclose(ftarget); + if (fsource != NULL) + fclose(fsource); free(buf); return ret; } @@ -77,10 +79,7 @@ int main(int argc, char **argv) { "help", no_argument, NULL, 'h' }, {} }; - static const char *searchpath[] = { - "/lib/firmware/updates/", - "/lib/firmware/" - }; + static const char *searchpath[] = { FIRMWARE_PATH }; char fwencpath[UTIL_PATH_SIZE]; char misspath[UTIL_PATH_SIZE]; char loadpath[UTIL_PATH_SIZE]; @@ -178,7 +177,8 @@ int main(int argc, char **argv) if (unlink(misspath) == 0) util_delete_path(udev, misspath); - set_loading(udev, loadpath, "1"); + if (!set_loading(udev, loadpath, "1")) + goto exit; util_strscpyl(datapath, sizeof(datapath), udev_get_sys_path(udev), devpath, "/data", NULL); if (!copy_firmware(udev, fwpath, datapath, statbuf.st_size)) {