]> git.ipfire.org Git - thirdparty/kmod.git/commitdiff
libkmod: return ENOMEM when strbuf_pushchar(s) fails
authorEmil Velikov <emil.l.velikov@gmail.com>
Wed, 4 Jun 2025 16:16:25 +0000 (17:16 +0100)
committerLucas De Marchi <lucas.de.marchi@gmail.com>
Wed, 11 Jun 2025 13:05:06 +0000 (08:05 -0500)
Currently get_strings() assumes that errno is set when either function
fails. This is not the case when our overflow checks kick in. The other
case where these functions fail is memory exhaustion.

In practice we cannot do anything if either of those trigger, plus I
don't see a compelling reason to set errno to EOVERFLOW... Something
which other parts of the codebase don't do.

So let's just return ENOMEM and avoid the corner case of returning
success from get_strings(), when it should be failing.

Fixes: 1005e99e ("libkmod: refactor builtin module handling")
Fixes: 952bf223 ("strbuf: Add strbuf_reserve_extra()")
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
Link: https://github.com/kmod-project/kmod/pull/368
Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
(cherry picked from commit 1eeb00f776eb9f78c4ec06f7891ce602cafb619e)

libkmod/libkmod-builtin.c

index f354d455d8ae631a0b6835552c1fecc1543db265..c1b84d81f008b812d3fda3b93ffb51ee24a41c5a 100644 (file)
@@ -114,7 +114,7 @@ static ssize_t get_strings(struct kmod_builtin_info *info, const char *modname,
                        break;
                }
                if (!strbuf_pushchars(buf, dot + 1) || !strbuf_pushchar(buf, '\0')) {
-                       count = -errno;
+                       count = -ENOMEM;
                        ERR(info->ctx, "get_strings: "
                                       "failed to append modinfo string\n");
                        return count;