projects
/
infodrom
/
dtaus
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
1b7f893
)
Handle too long values, i.e. bail out
author
Joey Schulze
<joey@infodrom.org>
Sun, 26 Jul 2009 16:29:04 +0000
(16:29 +0000)
committer
Joey Schulze
<joey@infodrom.org>
Sun, 26 Jul 2009 16:29:04 +0000
(16:29 +0000)
dtaus.c
patch
|
blob
|
history
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) {
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 ((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 ((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);
if ((valC[recindex] = (char *)malloc (strlen(line)+1)) == NULL)
return 0;
strcpy(valC[recindex], line);