From 709b6ef2f32fc728b7d1b6714d4cd67de4e07448 Mon Sep 17 00:00:00 2001 From: Ralph Lange Date: Mon, 3 Sep 2012 21:25:44 +0200 Subject: [PATCH] catools: Fix off-by-one bug in caput An internal buffer was allocated one char too short, when caput was used with the '-S' (send string as array of chars) option. Reported by J. Lewis Muir (tech-talk on 17-Aug-2012) --- src/catools/caput.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/catools/caput.c b/src/catools/caput.c index cea443c0d..9e1adcd46 100644 --- a/src/catools/caput.c +++ b/src/catools/caput.c @@ -492,12 +492,12 @@ int main (int argc, char *argv[]) if (charArrAsStr) { count = len; dbrType = DBR_CHAR; - ebuf = calloc(strlen(cbuf), sizeof(char)); + ebuf = calloc(strlen(cbuf)+1, sizeof(char)); if(!ebuf) { fprintf(stderr, "Memory allocation failed\n"); return 1; } - epicsStrnRawFromEscaped(ebuf, strlen(cbuf), cbuf, strlen(cbuf)); + epicsStrnRawFromEscaped(ebuf, strlen(cbuf)+1, cbuf, strlen(cbuf)); } else { for (i = 0; i < count; ++i) { epicsStrnRawFromEscaped(sbuf[i], sizeof(EpicsStr), *(argv+optind+i), sizeof(EpicsStr));