]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
util: document why parse_uid() returns ENXIO
authorLennart Poettering <lennart@poettering.net>
Thu, 3 Sep 2015 16:23:26 +0000 (18:23 +0200)
committerLennart Poettering <lennart@poettering.net>
Fri, 4 Sep 2015 07:07:31 +0000 (09:07 +0200)
parse_uid() returns EINVAL for invalid strings, but ENXIO for the
(uid_t) -1 user ids in order to distinguish these two cases. Document
this.

src/basic/util.c
src/test/test-util.c

index beec7cb7ddd109af24dea4d98637d694f9e321e7..86aacad30744b03eb0df36f93d4a29a739eab6cc 100644 (file)
@@ -403,7 +403,10 @@ int parse_uid(const char *s, uid_t* ret_uid) {
                 return -ERANGE;
 
         if (!uid_is_valid(uid))
-                return -ENXIO;
+                return -ENXIO; /* we return ENXIO instead of EINVAL
+                                * here, to make it easy to distuingish
+                                * invalid numeric uids invalid
+                                * strings. */
 
         if (ret_uid)
                 *ret_uid = uid;
index dff38ab6f68fb23ac17ba42169536f7cf673580b..10d8d210d5b46ef6c7e90eef338d9f533e3a4264 100644 (file)
@@ -282,6 +282,9 @@ static void test_parse_uid(void) {
 
         r = parse_uid("65535", &uid);
         assert_se(r == -ENXIO);
+
+        r = parse_uid("asdsdas", &uid);
+        assert_se(r == -EINVAL);
 }
 
 static void test_safe_atou16(void) {