Fix line-wrapping bug in baseconv.
[doldaconnect.git] / config / baseconv.c
index 360daad..56c8d2d 100644 (file)
@@ -14,6 +14,11 @@ int main(int argc, char **argv)
     char *(*decfn)(char *, size_t *);
     char *(*encfn)(char *, size_t);
     
+    if(argc < 3) {
+       fprintf(stderr, "usage: baseconv [4568] [4568]\n");
+       fprintf(stderr, "\tenter data on stdin\n");
+       exit(1);
+    }
     data = 0;
     if(!strcmp(argv[1], "4")) {
        decfn = hexdecode;
@@ -61,7 +66,7 @@ int main(int argc, char **argv)
                if(linelen + buflen > 60) {
                    fwrite(encbuf, 1, 60 - linelen, stdout);
                    fwrite("\n", 1, 1, stdout);
-                   buflen -= 60 - linelen;
+                   memmove(encbuf, encbuf + 60 - linelen, buflen -= 60 - linelen);
                }
                fwrite(encbuf, 1, buflen, stdout);
                linelen += buflen;