]> git.pond.sub.org Git - empserver/commitdiff
(plurize): Fix the strncat() len parameter to prevent an overflow of buf.
authorRon Koenderink <rkoenderink@yahoo.ca>
Sun, 13 Nov 2005 23:18:37 +0000 (23:18 +0000)
committerRon Koenderink <rkoenderink@yahoo.ca>
Sun, 13 Nov 2005 23:18:37 +0000 (23:18 +0000)
(numstr, esplur, splur, iesplur, plurize): Move the prototype defintions from
misc.h to prototypes.h.  Remove unneccessary headers in plur.c.

include/misc.h
include/prototypes.h
src/lib/gen/plur.c

index 4a2ffb4d27b49cce3c85c2a44756f91223c53596..b0ccc0f279c37ae842489f8520a3a6e6fc9457b8 100644 (file)
@@ -135,11 +135,6 @@ extern int daemonize;
 double dmax(double n1, double n2);
 double dmin(double n1, double n2);
 
-extern s_char *numstr(s_char buf[], int n);
-extern s_char *esplur(int n);
-extern s_char *splur(int n);
-extern s_char *iesplur(int n);
-extern char *plurize(char *buf, int max_len, int n);
 extern char *getstarg(char *input, char *prompt, char buf[]);
 extern char *getstring(char *prompt, char buf[]);
 extern char *ugetstring(char *prompt, char buf[]);
index 2f58ed01cb05289cb456177694be5c9960e8684d..f2dba1e63be29da6ddd0ae572370263af0cf28a7 100644 (file)
@@ -391,6 +391,12 @@ extern int parse(char *, char **, char **, char *, char **);
 extern int ldround(double, int);
 extern int roundintby(int, int);
 extern int scthash(register int, register int, int);
+/* plur.c */
+extern s_char *numstr(s_char buf[], int n);
+extern s_char *esplur(int n);
+extern s_char *splur(int n);
+extern s_char *iesplur(int n);
+extern char *plurize(char *buf, int max_len, int n);
 /* more in misc.h */
 
 /*
index 76a6703d4fd44c4dbbf6d5871da72f9f65f38d79..a681cb23b898bfb2c2fd2687c128a2f1643fae93 100644 (file)
@@ -31,8 +31,7 @@
  *     
  */
 
-#include "misc.h"
-#include "gen.h"
+#include "prototypes.h"
 
 s_char *
 splur(int n)
@@ -61,19 +60,21 @@ iesplur(int n)
 char *
 plurize(char *buf, int max_len, int n)
 {
-    if (!strlen(buf) || n <= 1)
+    size_t size = strlen(buf);
+
+    if (size || n <= 1)
        return buf;
 
-    switch(buf[strlen(buf) - 1]) {
+    switch(buf[size - 1]) {
     case 'y':
-       buf[strlen(buf) -1] = '\0';
-       strncat(buf, "ies", max_len - 1);
+       buf[size - 1] = '\0';
+       strncat(buf, "ies", max_len - size - 1);
        break;
     case 's':
-       strncat(buf, "es", max_len - 1);
+       strncat(buf, "es", max_len - size - 1);
        break;
     default:
-       strncat(buf, "s", max_len - 1);
+       strncat(buf, "s", max_len - size - 1);
     }
     return buf;
 }