Dolda2000 GitWeb
/
doldaconnect.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Handle newlines in base{64,32} gracefully.
[doldaconnect.git]
/
daemon
/
utils.c
diff --git
a/daemon/utils.c
b/daemon/utils.c
index
216ae77
..
8e38459
100644
(file)
--- a/
daemon/utils.c
+++ b/
daemon/utils.c
@@
-533,6
+533,8
@@
char *base64decode(char *data, size_t *datalen)
c = (int)(unsigned char)*data;
if(c == '=')
break;
c = (int)(unsigned char)*data;
if(c == '=')
break;
+ if(c == '\n')
+ continue;
if(base64rev[c] == -1)
{
if(buf != NULL)
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;
c = (int)(unsigned char)*data;
if(c == '=')
break;
+ if(c == '\n')
+ continue;
if(base32rev[c] == -1)
{
if(buf != NULL)
if(base32rev[c] == -1)
{
if(buf != NULL)
@@
-676,13
+680,19
@@
int _parrlen(void **arr)
char *getetcpath(char *binpath)
{
char *getetcpath(char *binpath)
{
+ int f;
char *etcpath, *p;
size_t etcpathsize, etcpathdata;
etcpath = NULL;
etcpathsize = etcpathdata = 0;
char *etcpath, *p;
size_t etcpathsize, etcpathdata;
etcpath = NULL;
etcpathsize = etcpathdata = 0;
+ f = 1;
do
{
do
{
+ if(f)
+ f = 0;
+ else
+ binpath++;
for(p = binpath; *p && (*p != ':'); p++);
for(; (p >= binpath) && (*p != '/'); p--);
if(p >= binpath)
for(p = binpath; *p && (*p != ':'); p++);
for(; (p >= binpath) && (*p != '/'); p--);
if(p >= binpath)