Commit 9280c208 authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

* Made '-' as file name to read cookies from equal stdin.

* I hope I finally removed 'empty cookies' crash
parent 1d758893
Loading
Loading
Loading
Loading
+12 −4
Original line number Diff line number Diff line
@@ -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,6 +317,7 @@ 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)
@@ -324,7 +325,13 @@ struct CookieInfo *cookie_init(char *file)
  memset(c, 0, sizeof(struct CookieInfo));
  c->filename = strdup(file?file:"none"); /* copy the name just in case */

  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,6 +351,7 @@ struct CookieInfo *cookie_init(char *file)
        cookie_add(c, FALSE, lineptr);
      }
    }
    if(fromfile)
      fclose(fp);
  }