From 3f2f9da4278262cddfe7b264990678c9966b8f79 Mon Sep 17 00:00:00 2001 From: Juanjo Menent Date: Fri, 24 Mar 2023 22:34:37 +0100 Subject: [PATCH 1/2] FIX #24201 Upload of external module fails to copy from incorrectly generated temp source dir --- htdocs/admin/modules.php | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/htdocs/admin/modules.php b/htdocs/admin/modules.php index 8fcffe8178b..980d39a12a5 100644 --- a/htdocs/admin/modules.php +++ b/htdocs/admin/modules.php @@ -4,7 +4,7 @@ * Copyright (C) 2004-2017 Laurent Destailleur * Copyright (C) 2004 Eric Seigne * Copyright (C) 2005-2017 Regis Houssin - * Copyright (C) 2011 Juanjo Menent + * Copyright (C) 2011-2023 Juanjo Menent * Copyright (C) 2015 Jean-François Ferry * Copyright (C) 2015 Raphaël Doursenaud * Copyright (C) 2018 Nicolas ZABOURI @@ -230,13 +230,12 @@ if ($action == 'install') { // Now we install the module if (!$error) { @dol_delete_dir_recursive($dirins.'/'.$modulenameval); // delete the target directory - $submodulenamedir = $conf->admin->dir_temp.'/'.$tmpdir.'/htdocs/'.$modulenameval; - dol_syslog("We copy now directory ".$submodulenamedir." into target dir ".$dirins.'/'.$modulenameval); - $result = dolCopyDir($submodulenamedir, $dirins.'/'.$modulenameval, '0444', 1); + dol_syslog("We copy now directory ".$modulenamedir." into target dir ".$dirins.'/'.$modulenameval); + $result = dolCopyDir($modulenamedir, $dirins.'/'.$modulenameval, '0444', 1); if ($result <= 0) { - dol_syslog('Failed to call dolCopyDir result='.$result." with param ".$submodulenamedir." and ".$dirins.'/'.$modulenameval, LOG_WARNING); + dol_syslog('Failed to call dolCopyDir result='.$result." with param ".$modulenamedir." and ".$dirins.'/'.$modulenameval, LOG_WARNING); $langs->load("errors"); - setEventMessages($langs->trans("ErrorFailToCopyDir", $submodulenamedir, $dirins.'/'.$modulenameval), null, 'errors'); + setEventMessages($langs->trans("ErrorFailToCopyDir", $modulenamedir, $dirins.'/'.$modulenameval), null, 'errors'); $error++; } } From f9b2c3d91d77db9aee75ed7fa257992d6752be4c Mon Sep 17 00:00:00 2001 From: Juanjo Menent Date: Mon, 27 Mar 2023 11:22:51 +0200 Subject: [PATCH 2/2] Fix: More accurate fix --- htdocs/admin/modules.php | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/htdocs/admin/modules.php b/htdocs/admin/modules.php index 980d39a12a5..ac8ff6161a9 100644 --- a/htdocs/admin/modules.php +++ b/htdocs/admin/modules.php @@ -230,12 +230,16 @@ if ($action == 'install') { // Now we install the module if (!$error) { @dol_delete_dir_recursive($dirins.'/'.$modulenameval); // delete the target directory - dol_syslog("We copy now directory ".$modulenamedir." into target dir ".$dirins.'/'.$modulenameval); - $result = dolCopyDir($modulenamedir, $dirins.'/'.$modulenameval, '0444', 1); + $submodulenamedir = $conf->admin->dir_temp.'/'.$tmpdir.'/'.$modulenameval; + if (!dol_is_dir($modulenamedir)) { + $submodulenamedir = $conf->admin->dir_temp.'/'.$tmpdir.'/htdocs/'.$modulenameval; + } + dol_syslog("We copy now directory ".$submodulenamedir." into target dir ".$dirins.'/'.$modulenameval); + $result = dolCopyDir($submodulenamedir, $dirins.'/'.$modulenameval, '0444', 1); if ($result <= 0) { - dol_syslog('Failed to call dolCopyDir result='.$result." with param ".$modulenamedir." and ".$dirins.'/'.$modulenameval, LOG_WARNING); + dol_syslog('Failed to call dolCopyDir result='.$result." with param ".$submodulenamedir." and ".$dirins.'/'.$modulenameval, LOG_WARNING); $langs->load("errors"); - setEventMessages($langs->trans("ErrorFailToCopyDir", $modulenamedir, $dirins.'/'.$modulenameval), null, 'errors'); + setEventMessages($langs->trans("ErrorFailToCopyDir", $submodulenamedir, $dirins.'/'.$modulenameval), null, 'errors'); $error++; } }