aboutsummaryrefslogtreecommitdiff
path: root/lib/cookie.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/cookie.c')
-rw-r--r--lib/cookie.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/lib/cookie.c b/lib/cookie.c
index 613c52e7f..00497bc94 100644
--- a/lib/cookie.c
+++ b/lib/cookie.c
@@ -102,7 +102,7 @@ struct Cookie *cookie_add(struct CookieInfo *c,
/* we have a <what>=<this> pair or a 'secure' word here */
if(strchr(ptr, '=')) {
name[0]=what[0]=0; /* init the buffers */
- if(2 == sscanf(ptr, "%" MAX_NAME_TXT "[^=]=%"
+ if(1 <= sscanf(ptr, "%" MAX_NAME_TXT "[^=]=%"
MAX_COOKIE_LINE_TXT "[^\r\n]",
name, what)) {
/* this is a legal <what>=<this> pair */
@@ -317,14 +317,21 @@ struct CookieInfo *cookie_init(char *file)
char line[MAX_COOKIE_LINE];
struct CookieInfo *c;
FILE *fp;
-
+ bool fromfile=TRUE;
+
c = (struct CookieInfo *)malloc(sizeof(struct CookieInfo));
if(!c)
return NULL; /* failed to get memory */
memset(c, 0, sizeof(struct CookieInfo));
c->filename = strdup(file?file:"none"); /* copy the name just in case */
- fp = file?fopen(file, "r"):NULL;
+ if(strequal(file, "-")) {
+ fp = stdin;
+ fromfile=FALSE;
+ }
+ else
+ fp = file?fopen(file, "r"):NULL;
+
if(fp) {
while(fgets(line, MAX_COOKIE_LINE, fp)) {
if(strnequal("Set-Cookie:", line, 11)) {
@@ -344,7 +351,8 @@ struct CookieInfo *cookie_init(char *file)
cookie_add(c, FALSE, lineptr);
}
}
- fclose(fp);
+ if(fromfile)
+ fclose(fp);
}
return c;