about summary refs log tree commit diff
diff options
context:
space:
mode:
authorSteve Grubb <sgrubb@redhat.com>2022-03-10 17:31:34 -0500
committerSiddhesh Poyarekar <siddhesh@sourceware.org>2022-03-14 20:02:30 +0530
commita35b8b225da4d3cf4bd81af3808f2ec50db003ce (patch)
treed5bef55cbec985fd28f85d49c322409eca4ffbe3
parent70f021e66ae73a99bff9bcc5b71eefb63fc74320 (diff)
downloadglibc-a35b8b225da4d3cf4bd81af3808f2ec50db003ce.tar.gz
glibc-a35b8b225da4d3cf4bd81af3808f2ec50db003ce.tar.xz
glibc-a35b8b225da4d3cf4bd81af3808f2ec50db003ce.zip
Add access function attributes to grp and shadow headers
This patch adds access function attributes to the re-entrant functions
in grp.h and shadow headers.

Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
-rw-r--r--grp/grp.h12
-rw-r--r--gshadow/gshadow.h12
-rw-r--r--shadow/shadow.h12
3 files changed, 24 insertions, 12 deletions
diff --git a/grp/grp.h b/grp/grp.h
index db32f897ec..bd3f6010ed 100644
--- a/grp/grp.h
+++ b/grp/grp.h
@@ -130,7 +130,8 @@ extern struct group *getgrnam (const char *__name);
 # ifdef __USE_GNU
 extern int getgrent_r (struct group *__restrict __resultbuf,
 		       char *__restrict __buffer, size_t __buflen,
-		       struct group **__restrict __result);
+		       struct group **__restrict __result)
+	__attr_access ((__write_only__, 2, 3));
 # endif
 
 /* Search for an entry with a matching group ID.
@@ -139,7 +140,8 @@ extern int getgrent_r (struct group *__restrict __resultbuf,
    marked with __THROW.  */
 extern int getgrgid_r (__gid_t __gid, struct group *__restrict __resultbuf,
 		       char *__restrict __buffer, size_t __buflen,
-		       struct group **__restrict __result);
+		       struct group **__restrict __result)
+	__attr_access ((__write_only__, 3, 4));
 
 /* Search for an entry with a matching group name.
 
@@ -148,7 +150,8 @@ extern int getgrgid_r (__gid_t __gid, struct group *__restrict __resultbuf,
 extern int getgrnam_r (const char *__restrict __name,
 		       struct group *__restrict __resultbuf,
 		       char *__restrict __buffer, size_t __buflen,
-		       struct group **__restrict __result);
+		       struct group **__restrict __result)
+	__attr_access ((__write_only__, 3, 4));
 
 # ifdef	__USE_MISC
 /* Read a group entry from STREAM.  This function is not standardized
@@ -161,7 +164,8 @@ extern int getgrnam_r (const char *__restrict __name,
 extern int fgetgrent_r (FILE *__restrict __stream,
 			struct group *__restrict __resultbuf,
 			char *__restrict __buffer, size_t __buflen,
-			struct group **__restrict __result);
+			struct group **__restrict __result)
+	__attr_access ((__write_only__, 3, 4));
 # endif
 
 #endif	/* POSIX or reentrant */
diff --git a/gshadow/gshadow.h b/gshadow/gshadow.h
index 66d6d3b883..170df5f68a 100644
--- a/gshadow/gshadow.h
+++ b/gshadow/gshadow.h
@@ -108,19 +108,23 @@ extern int putsgent (const struct sgrp *__g, FILE *__stream);
    or due to the implementation they are cancellation points and
    therefore not marked with __THROW.  */
 extern int getsgent_r (struct sgrp *__result_buf, char *__buffer,
-		       size_t __buflen, struct sgrp **__result);
+		       size_t __buflen, struct sgrp **__result)
+	__attr_access ((__write_only__, 2, 3));
 
 extern int getsgnam_r (const char *__name, struct sgrp *__result_buf,
 		       char *__buffer, size_t __buflen,
-		       struct sgrp **__result);
+		       struct sgrp **__result)
+	__attr_access ((__write_only__, 3, 4));
 
 extern int sgetsgent_r (const char *__string, struct sgrp *__result_buf,
 			char *__buffer, size_t __buflen,
-			struct sgrp **__result);
+			struct sgrp **__result)
+	__attr_access ((__write_only__, 3, 4));
 
 extern int fgetsgent_r (FILE *__stream, struct sgrp *__result_buf,
 			char *__buffer, size_t __buflen,
-			struct sgrp **__result);
+			struct sgrp **__result)
+	__attr_access ((__write_only__, 3, 4));
 #endif	/* misc */
 
 __END_DECLS
diff --git a/shadow/shadow.h b/shadow/shadow.h
index b29bcc41d0..649691b63c 100644
--- a/shadow/shadow.h
+++ b/shadow/shadow.h
@@ -122,19 +122,23 @@ extern int putspent (const struct spwd *__p, FILE *__stream);
    or due to the implementation they are cancellation points and
    therefore not marked with __THROW.  */
 extern int getspent_r (struct spwd *__result_buf, char *__buffer,
-		       size_t __buflen, struct spwd **__result);
+		       size_t __buflen, struct spwd **__result)
+	__attr_access ((__write_only__, 2, 3));
 
 extern int getspnam_r (const char *__name, struct spwd *__result_buf,
 		       char *__buffer, size_t __buflen,
-		       struct spwd **__result);
+		       struct spwd **__result)
+	__attr_access ((__write_only__, 3, 4));
 
 extern int sgetspent_r (const char *__string, struct spwd *__result_buf,
 			char *__buffer, size_t __buflen,
-			struct spwd **__result);
+			struct spwd **__result)
+	__attr_access ((__write_only__, 3, 4));
 
 extern int fgetspent_r (FILE *__stream, struct spwd *__result_buf,
 			char *__buffer, size_t __buflen,
-			struct spwd **__result);
+			struct spwd **__result)
+	__attr_access ((__write_only__, 3, 4));
 #endif	/* misc */