diff options
author | Aaron Griffin <aaron@archlinux.org> | 2007-03-06 04:22:03 +0000 |
---|---|---|
committer | Aaron Griffin <aaron@archlinux.org> | 2007-03-06 04:22:03 +0000 |
commit | 90b75a04351242c5b242359008a51c2fb0dd1d41 (patch) | |
tree | b7ac04003c9d7f45fd6668137e11b26d16a16b74 | |
parent | 5baba8439761a54c488ff42e4e599b3c93dbe669 (diff) | |
download | pacman-90b75a04351242c5b242359008a51c2fb0dd1d41.tar.xz |
* Fix the double package name URL when using XferCommand
* Fixed valgrind yelling about the sprintfs in md5/sha1 routines
-rw-r--r-- | lib/libalpm/md5driver.c | 6 | ||||
-rw-r--r-- | lib/libalpm/server.c | 12 | ||||
-rw-r--r-- | lib/libalpm/sha1.c | 4 |
3 files changed, 12 insertions, 10 deletions
diff --git a/lib/libalpm/md5driver.c b/lib/libalpm/md5driver.c index 60144fee..66071052 100644 --- a/lib/libalpm/md5driver.c +++ b/lib/libalpm/md5driver.c @@ -47,6 +47,7 @@ char* _alpm_MDFile(char *filename) FILE *file; MD_CTX context; int len; + char hex[3]; unsigned char buffer[1024], digest[16]; ALPM_LOG_FUNC; @@ -66,10 +67,11 @@ char* _alpm_MDFile(char *filename) ret = calloc(33, sizeof(char)); for(i = 0; i < 16; i++) { - sprintf(ret+(i*2), "%02x", digest[i]); + snprintf(hex, 3, "%02x", digest[i]); + strncat(ret, hex, 2); } - _alpm_log(PM_LOG_DEBUG, _("sha1(%s) = %s"), filename, ret); + _alpm_log(PM_LOG_DEBUG, _("md5(%s) = %s"), filename, ret); return(ret); } return(NULL); diff --git a/lib/libalpm/server.c b/lib/libalpm/server.c index f9ff6e5d..83b38ea5 100644 --- a/lib/libalpm/server.c +++ b/lib/libalpm/server.c @@ -319,8 +319,10 @@ int _alpm_downloadfiles_forreal(alpm_list_t *servers, const char *localpath, char parsedCmd[PATH_MAX] = ""; char url[PATH_MAX]; char cwd[PATH_MAX]; + /* build the full download url */ - snprintf(url, PATH_MAX, "%s://%s%s/%s", fileurl->scheme, fileurl->host, fileurl->doc, fn); + snprintf(url, PATH_MAX, "%s://%s%s", fileurl->scheme, fileurl->host, fileurl->doc); + /* replace all occurrences of %o with fn.part */ strncpy(origCmd, handle->xfercommand, sizeof(origCmd)); ptr1 = origCmd; @@ -328,8 +330,7 @@ int _alpm_downloadfiles_forreal(alpm_list_t *servers, const char *localpath, usepart = 1; ptr2[0] = '\0'; strcat(parsedCmd, ptr1); - strcat(parsedCmd, fn); - strcat(parsedCmd, ".part"); + strcat(parsedCmd, output); ptr1 = ptr2 + 2; } strcat(parsedCmd, ptr1); @@ -363,10 +364,7 @@ int _alpm_downloadfiles_forreal(alpm_list_t *servers, const char *localpath, /* download was successful */ complete = alpm_list_add(complete, fn); if(usepart) { - char fnpart[PATH_MAX]; - /* rename "output.part" file to "output" file */ - snprintf(fnpart, PATH_MAX, "%s.part", fn); - rename(fnpart, fn); + rename(output, realfile); } } chdir(cwd); diff --git a/lib/libalpm/sha1.c b/lib/libalpm/sha1.c index d9a9118d..fd5f1e4a 100644 --- a/lib/libalpm/sha1.c +++ b/lib/libalpm/sha1.c @@ -387,6 +387,7 @@ char* _alpm_SHAFile(char *filename) { FILE *file; struct sha_ctx context; int len, i; + char hex[3]; unsigned char buffer[1024], digest[20]; char *ret; @@ -405,7 +406,8 @@ char* _alpm_SHAFile(char *filename) { ret = (char*)malloc(41); ret[0] = '\0'; for(i = 0; i < 20; i++) { - sprintf(ret+(i*2), "%02x", digest[i]); + snprintf(hex, 3, "%02x", digest[i]); + strncat(ret, hex, 2); } _alpm_log(PM_LOG_DEBUG, _("sha1(%s) = %s"), filename, ret); return(ret); |