diff --git a/uptracker.cgi b/uptracker.cgi index 6afcff909..ff18fcd6f 100755 --- a/uptracker.cgi +++ b/uptracker.cgi @@ -28,7 +28,13 @@ print "\n"; print "\n"; # Find the location of the user's upload progress file -my $upfile = &tempname_dir_sys()."/upload.$id"; +if ($in{'uid'}) { + @uinfo = getpwuid($in{'uid'}); + $upfile = "$uinfo[7]/.tmp/upload.$id"; + } +else { + $upfile = &tempname_dir()."/upload.$id"; + } # Read the tracker file in a loop until done, or until 1 minute has passed # with no progress diff --git a/web-lib-funcs.pl b/web-lib-funcs.pl index f75f29784..a4f9b8aeb 100755 --- a/web-lib-funcs.pl +++ b/web-lib-funcs.pl @@ -1063,8 +1063,19 @@ my ($size, $totalsize, $filename, $id) = @_; return if ($gconfig{'no_upload_tracker'}); return if (!$id); -# Universal upload tracking directory -my $vardir = &tempname_dir_sys(); +# Create the upload tracking directory - if running as non-root, this has to +# be under the user's home +my $vardir; +if ($<) { + my @uinfo = @remote_user_info ? @remote_user_info : getpwuid($<); + $vardir = "$uinfo[7]/.tmp"; + } +else { + $vardir = &tempname_dir(); + } +if (!-d $vardir) { + &make_dir($vardir, 0755); + } # Remove any upload.* files more than 1 hour old if (!$main::read_parse_mime_callback_flushed) {