File: 39_bug674715-initgroups-ldflags

package info (click to toggle)
arpwatch 2.1a15-9
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,984 kB
  • sloc: sh: 3,047; ansic: 2,811; makefile: 90; awk: 90; perl: 15
file content (50 lines) | stat: -rw-r--r-- 1,587 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
Description: changes from 2.1a15-1.2 NMU
  * Fix initgroups() adding the gid 0 group to the list. Instead of dropping
    privileges it was in fact adding it. This is CVE-2012-2653. closes: #674715
  * Makefile.in: add LDFLAGS support.
Author: Yves-Alexis Perez <corsac@debian.org>

--- a/Makefile.in
+++ b/Makefile.in
@@ -49,6 +49,7 @@
 
 # Standard CFLAGS
 CFLAGS = $(CCOPT) $(DEFS) $(INCLS)
+LDFLAGS = @LDFLAGS@
 
 # Standard LIBS
 LIBS = @LIBS@
@@ -95,11 +96,11 @@
 
 arpwatch: $(WOBJ) @V_PCAPDEP@
 	@rm -f $@
-	$(CC) $(CFLAGS) -o $@ $(WOBJ) $(LIBS)
+	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(WOBJ) $(LIBS)
 
 arpsnmp: $(SOBJ)
 	@rm -f $@
-	$(CC) $(CFLAGS) -o $@ $(SOBJ) $(SLIBS)
+	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(SOBJ) $(SLIBS)
 
 version.o: version.c
 version.c: $(srcdir)/VERSION
@@ -107,7 +108,7 @@
 	sed -e 's/.*/char version[] = "&";/' $(srcdir)/VERSION > $(srcdir)/$@
 
 zap: zap.o intoa.o
-	$(CC) $(CFLAGS) -o $@ zap.o intoa.o -lutil
+	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ zap.o intoa.o -lutil
 
 install: force
 	$(INSTALL) -m 555 -o bin -g bin arpwatch $(DESTDIR)$(BINDEST)
--- a/arpwatch.c
+++ b/arpwatch.c
@@ -153,7 +153,7 @@
        struct passwd* pw;
        pw = getpwnam( user );
        if ( pw ) {
-               if ( initgroups(pw->pw_name, 0) != 0 || setgid(pw->pw_gid) != 0 ||
+               if ( initgroups(pw->pw_name, pw->pw_gid) != 0 || setgid(pw->pw_gid) != 0 ||
                        setuid(pw->pw_uid) != 0 ) {
                        syslog(LOG_ERR, "Couldn't change to '%.32s' uid=%d gid=%d", user,pw->pw_uid, pw->pw_gid);
                        exit(1);