Handle too long values, i.e. bail out
authorJoey Schulze <joey@infodrom.org>
Sun, 26 Jul 2009 16:29:04 +0000 (16:29 +0000)
committerJoey Schulze <joey@infodrom.org>
Sun, 26 Jul 2009 16:29:04 +0000 (16:29 +0000)
dtaus.c

diff --git a/dtaus.c b/dtaus.c
index 6254406..64f1449 100644 (file)
--- a/dtaus.c
+++ b/dtaus.c
@@ -1301,15 +1301,27 @@ int control2dtaus (char *ccontrol, char *cdtaus, char *cbeleg, char *ccheck, cha
                for (i=0; line[i]; i++) if (line[i] == ',') line[i] = '.';
 
                if ((cp = strchr (line, '.')) == NULL) {
+                 if (strlen(line) > 9) {
+                   fprintf (stderr, "Betrag %s zu gross (max. 9 Stellen)\n", line);
+                   return 0;
+                 }
                  if ((valC[recindex] = (char *)malloc (strlen(line)+4)) == NULL)
                    return 0;
                  sprintf (valC[recindex], "%s.00", line);
                } else if ( ((len = cp - line + 3)) < strlen (line)) {
+                 if (cp - line > 9) {
+                    fprintf (stderr, "Betrag %s zu gross (max. 9.2 Stellen)\n", line);
+                    return 0;
+                 }
                  if ((valC[recindex] = (char *)malloc (len+1)) == NULL)
                     return 0;
                   strncpy (valC[recindex], line, len);
                  valC[recindex][len] = '\0';
                } else {
+                 if (cp - line > 9) {
+                    fprintf (stderr, "Betrag %s zu gross (max. 9.2 Stellen)\n", line);
+                    return 0;
+                 }
                   if ((valC[recindex] = (char *)malloc (strlen(line)+1)) == NULL)
                     return 0;
                  strcpy(valC[recindex], line);