Handle newlines in base{64,32} gracefully.
[doldaconnect.git] / daemon / utils.c
index 216ae77..8e38459 100644 (file)
@@ -533,6 +533,8 @@ char *base64decode(char *data, size_t *datalen)
        c = (int)(unsigned char)*data;
        if(c == '=')
            break;
+       if(c == '\n')
+           continue;
        if(base64rev[c] == -1)
        {
            if(buf != NULL)
@@ -630,6 +632,8 @@ char *base32decode(char *data, size_t *datalen)
        c = (int)(unsigned char)*data;
        if(c == '=')
            break;
+       if(c == '\n')
+           continue;
        if(base32rev[c] == -1)
        {
            if(buf != NULL)
@@ -676,13 +680,19 @@ int _parrlen(void **arr)
 
 char *getetcpath(char *binpath)
 {
+    int f;
     char *etcpath, *p;
     size_t etcpathsize, etcpathdata;
 
     etcpath = NULL;
     etcpathsize = etcpathdata = 0;
+    f = 1;
     do
     {
+       if(f)
+           f = 0;
+       else
+           binpath++;
        for(p = binpath; *p && (*p != ':'); p++);
        for(; (p >= binpath) && (*p != '/'); p--);
        if(p >= binpath)