From: Lucas De Marchi Date: Wed, 30 Nov 2011 22:27:50 +0000 (-0200) Subject: Fix initialization of kernel modules dir X-Git-Tag: v1~163 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=904c63aa960d98ca26d125d8f0eb7a27fef1d41d;p=thirdparty%2Fkmod.git Fix initialization of kernel modules dir --- diff --git a/libkmod/libkmod.c b/libkmod/libkmod.c index 45ab2cef..3dea3b8f 100644 --- a/libkmod/libkmod.c +++ b/libkmod/libkmod.c @@ -126,14 +126,23 @@ static int log_priority(const char *priority) return 0; } -static const char *get_kernel_release(void) +static const char *dirname_default_prefix = "/lib/modules"; + +static const char *get_kernel_release(const char *dirname) { struct utsname u; + char *p; + + if (dirname != NULL) + return strdup(dirname); if (uname(&u) < 0) return NULL; - return strdup(u.release); + if (asprintf(&p, "%s/%s", dirname_default_prefix, u.release) < 0) + return NULL; + + return p; } /** @@ -160,10 +169,7 @@ KMOD_EXPORT struct kmod_ctx *kmod_new(const char *dirname) ctx->log_fn = log_stderr; ctx->log_priority = LOG_ERR; - if (dirname != NULL) - ctx->dirname = strdup(dirname); - else - ctx->dirname = get_kernel_release(); + ctx->dirname = get_kernel_release(dirname); /* environment overwrites config */ env = getenv("KMOD_LOG");