dictd/dictd-1.12.1-unused-return.patch
Matěj Cepl 7eb5a821d5
Update to version 1.13.3+git.1731775346.2b21553
* Update version to 1.13.3
* dictd: fix buffer overflow in first/last search strategies    Thanks a lot to Matěj Cepl <mcepl@cepl.eu> for the report!
* Remove config.{sub,guess}
* Update version to 1.13.2
* Rename configure.in to configure.ac
* dictP.h: remove #include <sys/time.h>
* configure.in: fix obsolete code
* Fix compilation issues with gcc-14
* Update configure script and the like (autoconf-2.72)
2025-03-01 14:57:33 +01:00

87 lines
2.6 KiB
Diff

---
dictd.c | 40 ++++++++++++++++++++++++++--------------
1 file changed, 26 insertions(+), 14 deletions(-)
Index: dictd-1.13.3+git.1731775346.2b21553/dictd.c
===================================================================
--- dictd-1.13.3+git.1731775346.2b21553.orig/dictd.c 2024-11-16 17:42:26.000000000 +0100
+++ dictd-1.13.3+git.1731775346.2b21553/dictd.c 2025-03-01 14:27:19.487380130 +0100
@@ -332,6 +332,7 @@
}
}
+/*
static void block_signals (void)
{
sigset_t set;
@@ -353,6 +354,7 @@
xsigprocmask (SIG_UNBLOCK, &set, NULL);
}
+*/
static void handler( int sig )
{
@@ -1270,19 +1272,25 @@
struct passwd *pwd;
if ((pwd = getpwnam("dictd"))) {
- setgid(pwd->pw_gid);
- initgroups("dictd",pwd->pw_gid);
- setuid(pwd->pw_uid);
+ if (setgid(pwd->pw_gid))
+ err_fatal_errno(NULL, ":E: setgid(%u) failed\n", (unsigned)pwd->pw_gid);
+ initgroups("dictd",pwd->pw_gid);
+ if (setuid(pwd->pw_uid))
+ err_fatal_errno(NULL, ":E: setuid(%u) failed\n", (unsigned)pwd->pw_uid);
} else if ((pwd = getpwnam("nobody"))) {
- setgid(pwd->pw_gid);
- initgroups("nobody",pwd->pw_gid);
- setuid(pwd->pw_uid);
+ if (setgid(pwd->pw_gid))
+ err_fatal_errno(NULL, ":E: setgid(%u) failed\n", (unsigned)pwd->pw_gid);
+ initgroups("nobody",pwd->pw_gid);
+ if (setuid(pwd->pw_uid))
+ err_fatal_errno(NULL, ":E: setuid(%u) failed\n", (unsigned)pwd->pw_uid);
} else {
- setgid(GID_NOGROUP);
- initgroups("nobody", GID_NOGROUP);
- setuid(UID_NOBODY);
+ if (setgid(GID_NOGROUP))
+ err_fatal_errno(NULL, ":E: setgid(%u) failed\n", (unsigned)pwd->pw_gid);
+ initgroups("nobody", GID_NOGROUP);
+ if (setuid(UID_NOBODY))
+ err_fatal_errno(NULL, ":E: setuid(%u) failed\n", (unsigned)pwd->pw_uid);
}
- }
+ }
}
/* Perform sanity checks that are often problems for people trying to
@@ -1471,9 +1479,12 @@
close (1);
close (2);
- dup (fd);
- dup (fd);
- dup (fd);
+ if (dup(fd) == -1)
+ err_fatal_errno(NULL, ":E: dup(2) failed\n");
+ if (dup(fd) == -1)
+ err_fatal_errno(NULL, ":E: dup(2) failed\n");
+ if (dup(fd) == -1)
+ err_fatal_errno(NULL, ":E: dup(2) failed\n");
}
int main (int argc, char **argv, char **envp)
@@ -1707,7 +1718,8 @@
if (detach){
/* become a daemon */
- daemon (0, 1);
+ if (daemon(0, 1))
+ err_fatal_errno(NULL, ":E: daemon(3) failed\n");
reopen_012 ();
/* after fork from daemon(3) */