Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37865920
en ru br
Репозитории ALT
S:5.17.0-alt2
5.1: 2.6.29-alt1
4.1: 2.6.23-alt2
4.0: 2.6.20.20070313-alt1
3.0: 2.4.7.20020116-alt5.1
www.altlinux.org/Changes

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

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

Патч: iproute2-2.4.7-owl-nstat-bound.patch
Скачать


diff -ur iproute2.orig/misc/nstat.c iproute2/misc/nstat.c
--- iproute2.orig/misc/nstat.c	Thu Jan 10 04:01:37 2002
+++ iproute2/misc/nstat.c	Sun Apr 18 02:11:51 2004
@@ -121,14 +121,16 @@
 		int nr;
 		unsigned long long val;
 		double rate;
-		char idbuf[256];
+		char idbuf[sizeof(buf)];
 		if (buf[0] == '#') {
 			buf[strlen(buf)-1] = 0;
 			if (info_source[0] && strcmp(info_source, buf+1))
 				source_mismatch = 1;
-			strncpy(info_source, buf+1, sizeof(info_source)-1);
+			info_source[0] = 0;
+			strncat(info_source, buf+1, sizeof(info_source)-1);
 			continue;
 		}
+		/* idbuf is as big as buf, so this is safe */
 		nr = sscanf(buf, "%s%llu%lg", idbuf, &val, &rate);
 		if (nr < 2)
 			abort();
@@ -162,7 +164,7 @@
 	struct nstat_ent *n;
 
 	while (fgets(buf, sizeof(buf), fp) != NULL) {
-		char idbuf[256];
+		char idbuf[sizeof(buf)];
 		int  off;
 		char *p;
 
@@ -170,8 +172,9 @@
 		if (!p)
 			abort();
 		*p = 0;
-		strcpy(idbuf, buf);
-		off = strlen(idbuf);
+		idbuf[0] = 0;
+		strncat(idbuf, buf, sizeof(idbuf) - 1);
+		off = p - buf;
 		p += 2;
 
 		while (*p) {
@@ -180,7 +183,10 @@
 				*next++ = 0;
 			else if ((next = strchr(p, '\n')) != NULL)
 				*next++ = 0;
-			strcpy(idbuf+off, p);
+			if (off < sizeof(idbuf)) {
+				idbuf[off] = 0;
+				strncat(idbuf, p, sizeof(idbuf) - off - 1);
+			}
 			n = malloc(sizeof(*n));
 			if (!n)
 				abort();
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin