diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2012-05-14 21:55:48 +0900 | 
|---|---|---|
| committer | Daniel Stenberg <daniel@haxx.se> | 2012-05-26 23:11:14 +0200 | 
| commit | 94eb1328969b796e4ecce3a113fc6ba24c167254 (patch) | |
| tree | 64402e2f2a391ceb7dc6c5174e6ff5e36fed763e | |
| parent | 383641d70a01da00f2a2484e8e8c3f6f20d24adb (diff) | |
Fixed segmentation fault when Metalink has no valid file or no resource.
| -rw-r--r-- | src/tool_metalink.c | 10 | 
1 files changed, 9 insertions, 1 deletions
diff --git a/src/tool_metalink.c b/src/tool_metalink.c index b442fc0d7..d31502ab2 100644 --- a/src/tool_metalink.c +++ b/src/tool_metalink.c @@ -94,6 +94,10 @@ int parse_metalink(struct Configurable *config, const char *infile)    if(r != 0) {      return -1;    } +  if(metalink->files == NULL) { +    fprintf(config->errors, "\nMetalink does not contain any file.\n"); +    return 0; +  }    ml = new_metalink(metalink);    if(config->metalink_list) { @@ -107,7 +111,11 @@ int parse_metalink(struct Configurable *config, const char *infile)    for(files = metalink->files; *files; ++files) {      struct getout *url;      /* Skip an entry which has no resource. */ -    if(!(*files)->resources[0]) continue; +    if(!(*files)->resources) { +      fprintf(config->errors, "\nFile %s does not have any resource.\n", +              (*files)->name); +      continue; +    }      if(config->url_get ||         ((config->url_get = config->url_list) != NULL)) {        /* there's a node here, if it already is filled-in continue to  | 
