From: Adrian Vovk Date: Thu, 22 Aug 2024 01:36:25 +0000 (-0400) Subject: sysupdated: Verify inputs more rigorously X-Git-Tag: v257-rc1~654^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b1bcaa0eb147a934f4f3042af27bf7435e643574;p=thirdparty%2Fsystemd.git sysupdated: Verify inputs more rigorously Also return better errors --- diff --git a/src/sysupdate/sysupdate-util.h b/src/sysupdate/sysupdate-util.h index 989e0693297..8504fd24b7d 100644 --- a/src/sysupdate/sysupdate-util.h +++ b/src/sysupdate/sysupdate-util.h @@ -5,3 +5,4 @@ int reboot_now(void); #define SD_SYSUPDATE_OFFLINE (UINT64_C(1) << 0) +#define SD_SYSUPDATE_FLAGS_ALL (SD_SYSUPDATE_OFFLINE) diff --git a/src/sysupdate/sysupdated.c b/src/sysupdate/sysupdated.c index 83295fe0d96..6405ff0e838 100644 --- a/src/sysupdate/sysupdated.c +++ b/src/sysupdate/sysupdated.c @@ -853,6 +853,9 @@ static int target_method_list(sd_bus_message *msg, void *userdata, sd_bus_error if (r < 0) return r; + if ((flags & ~SD_SYSUPDATE_FLAGS_ALL) != 0) + return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid flags specified"); + const char *details[] = { "class", target_class_to_string(t->class), "name", t->name, @@ -916,7 +919,10 @@ static int target_method_describe(sd_bus_message *msg, void *userdata, sd_bus_er return r; if (isempty(version)) - return -EINVAL; + return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Version must be specified"); + + if ((flags & ~SD_SYSUPDATE_FLAGS_ALL) != 0) + return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid flags specified"); const char *details[] = { "class", target_class_to_string(t->class), @@ -1057,7 +1063,7 @@ static int target_method_update(sd_bus_message *msg, void *userdata, sd_bus_erro return r; if (flags != 0) - return sd_bus_error_set_errnof(error, SYNTHETIC_ERRNO(EINVAL), "Flags argument must be 0: %m"); + return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Flags must be 0"); if (isempty(version)) action = "org.freedesktop.sysupdate1.update";