In some cases (when trust_remote_name is used for a URL without a filename and
no Content-Disposition is provided by the server) destfile_name will be
NULL. In this case payload data will be stored in tempfile_name and no
destfile_name is set.

Signed-off-by: Anatol Pomozov <anatol.pomo...@gmail.com>
---
 lib/libalpm/dload.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/lib/libalpm/dload.c b/lib/libalpm/dload.c
index 343f5c78..673e769f 100644
--- a/lib/libalpm/dload.c
+++ b/lib/libalpm/dload.c
@@ -897,15 +897,18 @@ int SYMEXPORT alpm_fetch_pkgurl(alpm_handle_t *handle, 
const alpm_list_t *urls,
 
                for(i = payloads; i; i = i->next) {
                        struct dload_payload *payload = i->data;
-                       const char *filename;
                        char *filepath;
 
                        if(payload->signature) {
                                continue;
                        }
 
-                       filename = mbasename(payload->destfile_name);
-                       filepath = _alpm_filecache_find(handle, filename);
+                       if(payload->destfile_name) {
+                               const char *filename = 
mbasename(payload->destfile_name);
+                               filepath = _alpm_filecache_find(handle, 
filename);
+                       } else {
+                               STRDUP(filepath, payload->tempfile_name, 
GOTO_ERR(handle, ALPM_ERR_MEMORY, err));
+                       }
                        if(filepath) {
                                alpm_list_append(fetched, filepath);
                        } else {
-- 
2.27.0

Reply via email to