]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Add function for getting a uid from a string
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Wed, 28 Apr 2021 17:22:39 +0000 (12:22 -0500)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Wed, 28 Apr 2021 17:22:39 +0000 (12:22 -0500)
Decorate declarations in perm.c

src/lib/util/perm.c
src/lib/util/perm.h

index 4f5572bbacc0e13715c4ab48461ad8bc732e7a65..887fc507885292221a80ebd7b0a456ac90a0b769 100644 (file)
@@ -307,11 +307,33 @@ int fr_perm_getgrnam(TALLOC_CTX *ctx, struct group **out, char const *name)
        return 0;
 }
 
+/** Resolve a user name to a GID
+ *
+ * @param[in] ctx      TALLOC_CTX for temporary allocations.
+ * @param[in] out      where to write gid.
+ * @param[in] name     of user.
+ * @return
+ *     - 0 on success.
+ *     - -1 on failure.
+ */
+int fr_perm_uid_from_str(TALLOC_CTX *ctx, uid_t *out, char const *name)
+{
+       int ret;
+       struct passwd *result;
+
+       ret = fr_perm_getpwnam(ctx, &result, name);
+       if (ret < 0) return -1;
+
+       *out = result->pw_uid;
+       talloc_free(result);
+       return 0;
+}
+
 /** Resolve a group name to a GID
  *
- * @param ctx TALLOC_CTX for temporary allocations.
- * @param name of group.
- * @param out where to write gid.
+ * @param[in] ctx      TALLOC_CTX for temporary allocations.
+ * @param[in] out      where to write gid.
+ * @param[in] name     of group.
  * @return
  *     - 0 on success.
  *     - -1 on failure.
index f72b57d09c8a5dfd01b32e9d1a5ad57834019d52..17378333d1147a9c7a00e394dd789a82cff7d7fa 100644 (file)
@@ -35,14 +35,25 @@ extern "C" {
 #endif
 
 void           fr_perm_mode_to_str(char out[static 10], mode_t mode);
+
 void           fr_perm_mode_to_oct(char out[static 5], mode_t mode);
-int            fr_perm_getpwuid(TALLOC_CTX *ctx, struct passwd **out, uid_t uid);
-int            fr_perm_getpwnam(TALLOC_CTX *ctx, struct passwd **out, char const *name);
-int            fr_perm_getgrgid(TALLOC_CTX *ctx, struct group **out, gid_t gid);
-int            fr_perm_getgrnam(TALLOC_CTX *ctx, struct group **out, char const *name);
-int            fr_perm_gid_from_str(TALLOC_CTX *ctx, gid_t *out, char const *name);
+
+int            fr_perm_getpwuid(TALLOC_CTX *ctx, struct passwd **out, uid_t uid) CC_HINT(nonnull(2));
+
+int            fr_perm_getpwnam(TALLOC_CTX *ctx, struct passwd **out, char const *name) CC_HINT(nonnull(2,3));
+
+int            fr_perm_getgrgid(TALLOC_CTX *ctx, struct group **out, gid_t gid) CC_HINT(nonnull(2));
+
+int            fr_perm_getgrnam(TALLOC_CTX *ctx, struct group **out, char const *name) CC_HINT(nonnull(2,3));
+
+int            fr_perm_uid_from_str(TALLOC_CTX *ctx, uid_t *out, char const *name) CC_HINT(nonnull(2,3));
+
+int            fr_perm_gid_from_str(TALLOC_CTX *ctx, gid_t *out, char const *name) CC_HINT(nonnull(2,3));
+
 char           *fr_perm_uid_to_str(TALLOC_CTX *ctx, uid_t uid);
+
 char           *fr_perm_gid_to_str(TALLOC_CTX *ctx, gid_t gid);
+
 void           fr_perm_file_error(int num);
 
 #ifdef __cplusplus