Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37727750
en ru br
Репозитории ALT
S:4.0.20100725-alt3
5.1: 4.0.20061122-alt2
4.1: 4.0.20061122-alt1
4.0: 4.0.20061122-alt1
3.0: 3.6-alt2
www.altlinux.org/Changes

Группа :: Сети/Прочее
Пакет: netcat

 Главная   Изменения   Спек   Патчи   Sources   Загрузить   Gear   Bugs and FR  Repocop 

Патч: netcat-4.0.20061122-owl-alt-linux.patch
Скачать


--- netcat-4.0.20061122/usr.bin/nc/Makefile
+++ netcat-4.0.20061122/usr.bin/nc/Makefile
@@ -1,6 +1,25 @@
 #	$OpenBSD: Makefile,v 1.6 2001/09/02 18:45:41 jakob Exp $
 
+CC = gcc
+LD = gcc
+RM = rm -f
+ifndef CFLAGS
+CFLAGS = -c -O2 -fomit-frame-pointer
+endif
+CFLAGS += -Wall -Dlint
+LDFLAGS = -s
+LIBS += -lresolv
+
 PROG=	nc
 SRCS=	netcat.c atomicio.c socks.c
 
-.include <bsd.prog.mk>
+all: $(PROG)
+
+$(PROG): $(SRCS:.c=.o)
+	$(LD) $(LDFLAGS) $+ $(LIBS) -o $@
+
+.c.o:
+	$(CC) $(CFLAGS) $< -o $@
+
+clean:
+	$(RM) $(PROG) $(SRCS:.c=.o)
--- netcat-4.0.20061122/usr.bin/nc/netcat.c
+++ netcat-4.0.20061122/usr.bin/nc/netcat.c
@@ -54,6 +54,7 @@
 #include <fcntl.h>
 #include <limits.h>
 #include "atomicio.h"
+#include <time.h>
 
 #ifndef SUN_LEN
 #define SUN_LEN(su) \
@@ -175,6 +176,7 @@ main(int argc, char *argv[])
 			break;
 		case 'r':
 			rflag = 1;
+			srandom(time(NULL) + getpid());
 			break;
 		case 's':
 			sflag = optarg;
@@ -294,7 +296,7 @@ main(int argc, char *argv[])
 			if (family != AF_UNIX)
 				s = local_listen(host, uport, hints);
 			if (s < 0)
-				err(1, NULL);
+				exit(1);
 			/*
 			 * For UDP, we will use recvfrom() initially
 			 * to wait for a caller, then use the regular
@@ -414,12 +416,10 @@ unix_connect(char *path)
 	memset(&sun, 0, sizeof(struct sockaddr_un));
 	sun.sun_family = AF_UNIX;
 
-	if (strlcpy(sun.sun_path, path, sizeof(sun.sun_path)) >=
-	    sizeof(sun.sun_path)) {
-		close(s);
-		errno = ENAMETOOLONG;
-		return (-1);
-	}
+	if (strlen(path) >= sizeof(sun.sun_path))
+		errx(1, "Socket path too long");
+	strcpy(sun.sun_path, path);
+
 	if (connect(s, (struct sockaddr *)&sun, SUN_LEN(&sun)) < 0) {
 		close(s);
 		return (-1);
@@ -445,12 +445,9 @@ unix_listen(char *path)
 	memset(&sun, 0, sizeof(struct sockaddr_un));
 	sun.sun_family = AF_UNIX;
 
-	if (strlcpy(sun.sun_path, path, sizeof(sun.sun_path)) >=
-	    sizeof(sun.sun_path)) {
-		close(s);
-		errno = ENAMETOOLONG;
-		return (-1);
-	}
+	if (strlen(path) >= sizeof(sun.sun_path))
+		errx(1, "Socket path too long");
+	strcpy(sun.sun_path, path);
 
 	if (bind(s, (struct sockaddr *)&sun, SUN_LEN(&sun)) < 0) {
 		close(s);
@@ -550,7 +547,7 @@ local_listen(char *host, char *port, struct addrinfo hints)
 		    res0->ai_protocol)) < 0)
 			continue;
 
-		ret = setsockopt(s, SOL_SOCKET, SO_REUSEPORT, &x, sizeof(x));
+		ret = setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &x, sizeof(x));
 		if (ret == -1)
 			err(1, NULL);
 
@@ -719,7 +716,7 @@ build_ports(char *p)
 			char *c;
 
 			for (x = 0; x <= (hi - lo); x++) {
-				y = (arc4random() & 0xFFFF) % (hi - lo);
+				y = (random() & 0xFFFF) % (hi - lo);
 				c = portlist[x];
 				portlist[x] = portlist[y];
 				portlist[y] = c;
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin