Commit b64dd9c1 authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

changed the glob_url() call, after Janne Johansson's buffer overflow report

parent fac113a2
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -965,8 +965,12 @@ int main(int argc, char *argv[])
#endif

#ifdef GLOBURL
  urlnum = glob_url(&urls, url);	/* expand '{...}' and '[...]' expressions and return
					   total number of URLs in pattern set */
  /* expand '{...}' and '[...]' expressions and return total number of URLs
     in pattern set */
  res = glob_url(&urls, url, &urlnum);
  if(res != URG_OK)
    return res;

  outfiles = config.outfile;		/* save outfile pattern befor expansion */
  if (!outfiles && !config.remotefile && urlnum > 1) {
#ifdef CURL_SEPARATORS
+10 −5
Original line number Diff line number Diff line
@@ -204,17 +204,22 @@ int glob_word(char *pattern, int pos) {
  exit (URG_FAILED_INIT);
}

int glob_url(URLGlob** glob, char* url) {
  int urlnum;		/* counts instances of a globbed pattern */
int glob_url(URLGlob** glob, char* url, int *urlnum)
{
  if (strlen(url)>URL_MAX_LENGTH) {
    printf("Illegally sized URL\n");
    return URG_URL_MALFORMAT;
  }

  glob_expand = (URLGlob*)malloc(sizeof(URLGlob));
  glob_expand->size = 0;
  urlnum = glob_word(url, 1);
  *urlnum = glob_word(url, 1);
  *glob = glob_expand;
  return urlnum;
  return URG_OK;
}

char *next_url(URLGlob *glob) {
char *next_url(URLGlob *glob)
{
  static int beenhere = 0;
  char *buf = glob_buffer;
  URLPattern *pat;
+1 −1
Original line number Diff line number Diff line
@@ -67,7 +67,7 @@ typedef struct {
  int size;
} URLGlob;

int glob_url(URLGlob**, char*);
int glob_url(URLGlob**, char*, int *);
char* next_url(URLGlob*);
char* match_url(char*, URLGlob);