Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37862175
en ru br
Репозитории ALT
S:4.4.3-alt1
5.1: 3.4.1-alt2
www.altlinux.org/Changes

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

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

Патч: 0001-fix-buffer_overflow.patch
Скачать


From a68cee4eca1e9f30b7227f4721ccadbf34bea83a Mon Sep 17 00:00:00 2001
From: Boris Savelev <boris@altlinux.org>
Date: Mon, 20 Jul 2009 16:43:36 +0400
Subject: [PATCH] fix buffer_overflow
---
 tcpreplay/src/common/cache.c |    2 +-
 tcpreplay/src/common/cidr.c  |    7 ++++---
 2 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/tcpreplay/src/common/cache.c b/tcpreplay/src/common/cache.c
index f527e82..1ff9e9e 100644
--- a/tcpreplay/src/common/cache.c
+++ b/tcpreplay/src/common/cache.c
@@ -170,7 +170,7 @@ write_cache(tcpr_cache_t * cachedata, const int out_file, COUNTER numpackets,
     cache_header = (tcpr_cache_file_hdr_t *)
         safe_malloc(sizeof(tcpr_cache_file_hdr_t));
     strncpy(cache_header->magic, CACHEMAGIC, strlen(CACHEMAGIC));
-    strncpy(cache_header->version, CACHEVERSION, strlen(CACHEMAGIC));
+    strncpy(cache_header->version, CACHEVERSION, strlen(CACHEVERSION));
     cache_header->packets_per_byte = htons(CACHE_PACKETS_PER_BYTE);
     cache_header->num_packets = htonll((u_int64_t)numpackets);
 
diff --git a/tcpreplay/src/common/cidr.c b/tcpreplay/src/common/cidr.c
index 7d96368..dca5b5c 100644
--- a/tcpreplay/src/common/cidr.c
+++ b/tcpreplay/src/common/cidr.c
@@ -480,6 +480,7 @@ cidr2iplist(tcpr_cidr_t * cidr, char delim)
 {
     char *list = NULL;
     char ipaddr[16];
+    char ipaddr_17[17];
     u_int32_t size, addr, first, last, numips;
     struct in_addr in;
 
@@ -506,9 +507,9 @@ cidr2iplist(tcpr_cidr_t * cidr, char delim)
     /* loop through all but the last one */
     for (addr = first; addr < last; addr++) {
         in.s_addr = htonl(addr);
-        snprintf(ipaddr, 17, "%s%c", inet_ntoa(in), delim);
-        dbgx(2, "%s", ipaddr);
-        strlcat(list, ipaddr, size);
+        snprintf(ipaddr_17, 17, "%s%c", inet_ntoa(in), delim);
+        dbgx(2, "%s", ipaddr_17);
+        strlcat(list, ipaddr_17, size);
     }
 
     /* last is a special case, end in \0 */
-- 
1.6.3.3
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin