← Commit list

df822f260

Rob Landley
Rob Landley
2006-07-15
SOURCE BUG Duration: 44s

Subject

We need xsetuid() and xsetgid() because per-user process resource limits can prevent a process from switching to a user that has too many processes, and when that happens WE'RE STILL ROOT. See http://lwn.net/Articles/190331/

SOURCE BUG

This commit was genuinely broken at the time (not related to our build system): scripts/config/mkconfigs.c (2005-08-01 - 2006-10-05 arasi) uretilen bbconfigopts.h icine .config satirlarini kacissiz, ham newline'larla gömüyordu - gecerli C degildi, busybox'un kendi bb_mkdep araci bile parse edemiyordu (7d219aab7 ile duzeltildi, mkconfigs shell scripte cevrildi)

→ Bu hatanin tam hikayesini ve duzeltme diffini gor

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

include/libbb.h+2 -0
@@ -185,6 +185,8 @@ extern void utoa_to_buf(unsigned n, char *buf, unsigned buflen);
extern char *utoa(unsigned n);
extern void itoa_to_buf(int n, char *buf, unsigned buflen);
extern char *itoa(int n);
+extern void xsetgid(gid_t gid);
+extern void xsetuid(uid_t uid);
#define BB_GETOPT_ERROR 0x80000000UL
extern const char *bb_opt_complementally;
libbb/xfuncs.c+12 -0
@@ -282,3 +282,15 @@ char *itoa(int n)
return local_buf;
}
#endif
+
+#ifdef L_setuid
+void xsetgid(gid_t gid)
+{
+ if (setgid(gid)) bb_error_msg_and_die("setgid");
+}
+
+void xsetuid(uid_t uid)
+{
+ if (setuid(uid)) bb_error_msg_and_die("setuid");
+}
+#endif