From 034313dfd8694b74aec316d7ddc2ec6da07bccb8 Mon Sep 17 00:00:00 2001 From: Stefan Walter Date: Sun, 19 Oct 2008 08:09:02 +0000 Subject: [PATCH] Fix a potential buffer overflow. PR: 128216 Submitted by: maintainer --- comms/qpage/Makefile | 2 +- comms/qpage/files/patch-srvrsnpp.c | 28 ++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 comms/qpage/files/patch-srvrsnpp.c diff --git a/comms/qpage/Makefile b/comms/qpage/Makefile index 3d47844fce45..d08258a0c56d 100644 --- a/comms/qpage/Makefile +++ b/comms/qpage/Makefile @@ -7,7 +7,7 @@ PORTNAME= qpage PORTVERSION= 3.3 -PORTREVISION= 4 +PORTREVISION= 5 CATEGORIES= comms MASTER_SITES= http://www.qpage.org/download/ EXTRACT_SUFX= .tar.Z diff --git a/comms/qpage/files/patch-srvrsnpp.c b/comms/qpage/files/patch-srvrsnpp.c new file mode 100644 index 000000000000..95b27126e8ad --- /dev/null +++ b/comms/qpage/files/patch-srvrsnpp.c @@ -0,0 +1,28 @@ +--- srvrsnpp.c.orig 1998-10-25 14:55:05.000000000 -0500 ++++ srvrsnpp.c 2008-10-18 18:09:44.175331511 -0400 +@@ -523,6 +523,7 @@ + char *errmsg; + char *a; + char *b; ++ char *m; + int i; + int badarg; + int gotpager; +@@ -701,7 +702,16 @@ + + p->created = time(NULL); + (void)sprintf(buff, "%d", pagecount++); +- (void)strcat(p->messageid, buff); ++ m = (void *)malloc(sizeof(*m) * strlen(p->messageid) + sizeof(*m) * strlen(buff)); ++ if ( m == NULL ) { ++ message("554 Message failed (out of memory)"); ++ qpage_log(LOG_ERR, "snpp(): cannot allocate memory for p->messageid"); ++ clear_page(p, TRUE); ++ break; ++ } ++ (void)sprintf(m, "%s%s", p->messageid, buff); ++ my_free(p->messageid); ++ p->messageid = m; + + qpage_log(LOG_ALERT, "page submitted, id=%s, from=%s", + p->messageid,