SHA256
1
0
forked from pool/bing
bing/bing-1.0.5.dif
OBS User autobuild 233ecdc189 Accepting request 24483 from network:utilities
Copy from network:utilities/bing based on submit request 24483 from user msmeissn

OBS-URL: https://build.opensuse.org/request/show/24483
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/bing?expand=0&rev=7
2009-11-16 16:53:57 +00:00

140 lines
3.6 KiB
Plaintext

Index: Makefile
===================================================================
--- Makefile.orig
+++ Makefile
@@ -1,8 +1,8 @@
#
# $Id: Makefile,v 1.4 1995/07/21 00:03:30 pb Exp $
#
-MANDIR=/usr/local/man
-BINDIR=/usr/local/bin
+MANDIR=/usr/man
+BINDIR=/usr/bin
INSTALL=install -c
GROFF=groff
NROFF=nroff
@@ -28,5 +28,5 @@ clean:
$(RM) -f bing bing.ps bing.0
install: bing bing.8
- $(INSTALL) -m 644 -o man -g man bing.8 $(MANDIR)/man8
- $(INSTALL) -m 4555 -o root -g staff bing $(BINDIR)
+ $(INSTALL) -m 644 bing.8 $(MANDIR)/man8
+ $(INSTALL) -m 4555 -o root -g root bing $(BINDIR)
Index: bing.c
===================================================================
--- bing.c.orig
+++ bing.c
@@ -170,10 +170,13 @@ static char rcsid[] = "$Id: bing.c,v 1.1
#include <netdb.h>
#include <unistd.h>
#include <stdio.h>
+#include <stdlib.h>
#include <ctype.h>
#include <errno.h>
#include <string.h>
#include <limits.h>
+#include <pwd.h>
+#include <grp.h>
#include "sysdep.h"
@@ -530,7 +533,7 @@ void pr_iph(ip)
(void)printf(" %1x %04x", ((ip->ip_off) & 0xe000) >> 13,
(ip->ip_off) & 0x1fff);
(void)printf(" %02x %02x %04x", ip->ip_ttl, ip->ip_p, ip->ip_sum);
-#ifdef linux
+#if defined linux && !defined __NETINET_IP_ICMP_H
(void)printf(" %s ", inet_ntoa(ip->ip_src));
(void)printf(" %s ", inet_ntoa(ip->ip_dst));
#else
@@ -644,7 +647,7 @@ void pr_icmph(icp)
(void)printf("Redirect, Bad Code: %d", icp->icmp_code);
break;
}
-#ifdef linux
+#if defined linux && !defined __NETINET_IP_ICMP_H
(void)printf("(New addr: 0x%08lx)\n", icp->icmp_gwaddr);
#else
(void)printf("(New addr: 0x%08lx)\n", icp->icmp_gwaddr.s_addr);
@@ -671,7 +674,7 @@ void pr_icmph(icp)
pr_retip((struct ip *)ICMP_TO_DATA(icp));
break;
case ICMP_PARAMPROB:
-#ifdef linux
+#if defined linux && !defined __NETINET_IP_ICMP_H
(void)printf("Parameter problem: pointer = 0x%02x\n",
icp->un.gateway);
#else
@@ -1229,11 +1232,12 @@ int main(argc, argv)
struct protoent *proto;
struct in_addr ifaddr;
struct hoststats *hs1, *hs2;
+ struct passwd *pwd;
int ntrans, nloops, bits;
int i;
int ch, hold, recv_packlen, preload;
u_char *datap, *recv_packet;
- char *target1, *target2, *malloc();
+ char *target1, *target2;
u_char ttl, loop;
#ifdef IP_OPTIONS
char rspace[3 + 4 * NROUTES + 1]; /* record route space */
@@ -1348,9 +1352,10 @@ int main(argc, argv)
moptions |= MULTICAST_IF;
{
int i1, i2, i3, i4;
+ char dummy;
if (sscanf(optarg, "%u.%u.%u.%u%c",
- &i1, &i2, &i3, &i4, &i) != 4) {
+ &i1, &i2, &i3, &i4, &dummy) != 4) {
printf("bad interface address '%s'\n",
optarg);
exit(1);
@@ -1406,6 +1411,21 @@ int main(argc, argv)
perror("bing: socket");
exit(1);
}
+
+ // drop root privs
+ if((pwd = getpwuid(getuid())) == NULL)
+ {
+ perror("bing: getpwuid()");
+ exit(1);
+ }
+ if(initgroups(pwd->pw_name, pwd->pw_gid) < 0)
+ {
+ perror("bing: initgroups()");
+ exit(1);
+ }
+ setgid(getgid());
+ setuid(getuid());
+
hold = 1;
if (options & F_SO_DEBUG)
(void)setsockopt(s, SOL_SOCKET, SO_DEBUG, (char *)&hold,
Index: sysdep.h
===================================================================
--- sysdep.h.orig
+++ sysdep.h
@@ -46,7 +46,7 @@
#ifndef _SYSDEP_H_
#define _SYSDEP_H_
-#ifdef linux
+#if defined linux && !defined __NETINET_IP_ICMP_H
#define icmp icmphdr
#define ip iphdr
#define icmp_type type
@@ -66,7 +66,9 @@
#define ip_sum check
#define ip_src saddr
#define ip_dst daddr
+#ifndef MAX_IPOPTLEN
#define MAX_IPOPTLEN 4096
+#endif
#define ICMP_MINLEN 16
#define IPOPT_MINOFF 4