Author: se
Date: Fri Oct 30 14:32:13 2020
New Revision: 367166
URL: https://svnweb.freebsd.org/changeset/base/367166

Log:
  Fix length calculation in memmove
  
  MFC after:    3 days

Modified:
  head/usr.bin/calendar/events.c
  head/usr.bin/calendar/io.c

Modified: head/usr.bin/calendar/events.c
==============================================================================
--- head/usr.bin/calendar/events.c      Fri Oct 30 14:07:25 2020        
(r367165)
+++ head/usr.bin/calendar/events.c      Fri Oct 30 14:32:13 2020        
(r367166)
@@ -55,6 +55,7 @@ set_new_encoding(void)
        const char *newenc;
 
        newenc = nl_langinfo(CODESET);
+       fprintf(stderr, "NEWENC=%s\n", newenc); // DEBUG
        if (currentEncoding == NULL) {
                currentEncoding = strdup(newenc);
                if (currentEncoding == NULL)
@@ -98,13 +99,14 @@ convert(char *input)
                        else
                                err(1, "Initialization failure");
                }
+       fprintf(stderr, "CONV=%p\n", conv); // DEBUG
        }
 
        inleft = strlen(input);
        inbuf = input;
 
-       outlen = inleft;
-       if ((output = malloc(outlen + 1)) == NULL)
+       outlen = inleft + 3;
+       if ((output = malloc(outlen)) == NULL)
                errx(1, "convert: cannot allocate memory");
 
        for (;;) {
@@ -112,7 +114,9 @@ convert(char *input)
                outbuf = output + converted;
                outleft = outlen - converted;
 
+               fprintf(stderr, "-< %s %p %ld %ld\n", inbuf, outbuf, inleft, 
outleft); // DEBUG
                converted = iconv(conv, (char **) &inbuf, &inleft, &outbuf, 
&outleft);
+               fprintf(stderr, "-> %ld %s %p %ld %ld\n", converted, inbuf, 
outbuf, inleft, outleft); // DEBUG
                if (converted != (size_t) -1 || errno == EINVAL) {
                        /* finished or invalid multibyte, so truncate and 
ignore */
                        break;

Modified: head/usr.bin/calendar/io.c
==============================================================================
--- head/usr.bin/calendar/io.c  Fri Oct 30 14:07:25 2020        (r367165)
+++ head/usr.bin/calendar/io.c  Fri Oct 30 14:32:13 2020        (r367166)
@@ -311,16 +311,19 @@ cal_parse(FILE *in, FILE *out)
                                c = strstr(buf, "//");
                                cc = strstr(buf, "/*");
                                if (c != NULL && (cc == NULL || c - cc < 0)) {
+                                       /* single line comment */
                                        *c = '\0';
                                        linelen = c - buf;
                                        break;
                                } else if (cc != NULL) {
                                        c = strstr(cc + 2, "*/");
                                        if (c != NULL) {
+                                               /* multi-line comment ending on 
same line */
                                                c += 2;
-                                               memmove(cc, c, c - buf + 
linelen);
+                                               memmove(cc, c, buf + linelen + 
1 - c);
                                                linelen -= c - cc;
                                        } else {
+                                               /* multi-line comment */
                                                *cc = '\0';
                                                linelen = cc - buf;
                                                incomment = true;
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to