safe_macros: Add SAFE_GETRESUID and SAFE_GETRESGID

Signed-off-by: Zeng Linggang <zenglg.jy@cn.fujitsu.com>
diff --git a/lib/safe_macros.c b/lib/safe_macros.c
index 48a837c..7bc00a0 100644
--- a/lib/safe_macros.c
+++ b/lib/safe_macros.c
@@ -1,3 +1,4 @@
+#define _GNU_SOURCE
 #include <sys/types.h>
 #include <sys/mman.h>
 #include <sys/resource.h>
@@ -326,6 +327,36 @@
 	return rval;
 }
 
+int safe_getresuid(const char *file, const int lineno, void (*cleanup_fn)(void),
+		   uid_t *ruid, uid_t *euid, uid_t *suid)
+{
+	int rval;
+
+	rval = getresuid(ruid, euid, suid);
+	if (rval == -1) {
+		tst_brkm(TBROK | TERRNO, cleanup_fn,
+			 "%s:%d: getresuid(%p, %p, %p) failed",
+			 file, lineno, ruid, euid, suid);
+	}
+
+	return rval;
+}
+
+int safe_getresgid(const char *file, const int lineno, void (*cleanup_fn)(void),
+		   gid_t *rgid, gid_t *egid, gid_t *sgid)
+{
+	int rval;
+
+	rval = getresgid(rgid, egid, sgid);
+	if (rval == -1) {
+		tst_brkm(TBROK | TERRNO, cleanup_fn,
+			 "%s:%d: getresgid(%p, %p, %p) failed",
+			 file, lineno, rgid, egid, sgid);
+	}
+
+	return rval;
+}
+
 int safe_unlink(const char *file, const int lineno, void (*cleanup_fn) (void),
                 const char *pathname)
 {