libkmod: fix possible double free with wrong modules.builtin.modinfo 99/258599/1
authorSeung-Woo Kim <sw0312.kim@samsung.com>
Tue, 13 Apr 2021 11:23:15 +0000 (20:23 +0900)
committerSeung-Woo Kim <sw0312.kim@samsung.com>
Thu, 20 May 2021 09:48:20 +0000 (18:48 +0900)
Fix double free for *modinfo with non '\0' terminated wrong
modules.builtin.modinfo, which is because EOF is minus value.

Signed-off-by: Seung-Woo Kim <sw0312.kim@samsung.com>
[sw0312.kim: cherry-pick mainline commit 675410c3b3b1]

Change-Id: I9899505ff12d1444013b92007bb0474115047104

libkmod/libkmod-builtin.c

index a75a542..a002cb5 100644 (file)
@@ -313,7 +313,7 @@ ssize_t kmod_builtin_get_modinfo(struct kmod_ctx *ctx, const char *modname,
        while (offset < iter->next) {
                offset = get_string(iter, pos, &line, &linesz);
                if (offset <= 0) {
-                       count = (offset) ? -errno : -EOF;
+                       count = (offset) ? -errno : -EINVAL;
                        free(*modinfo);
                        goto fail;
                }