Upload Module Compilation on 64-Bit Architecture

Hello,

I was unable to compile the latest version (2.0.7) of the Nginx upload
module on a 64-bit system. I tried with both Nginx 0.6.32 and 0.7.19.
I received a warning about a comparison of a signed and unsigned int and
Nginx will abort compilation if a warning is encountered.

I was able to successfully compile Nginx with the upload module by
changing
line 981 in ngx_http_upload_module.c from:

if(u->output_file.offset + len > ulcf->max_file_size)

to:

if((unsigned int)(u->output_file.offset + len) > 

ulcf->max_file_size)

My C is pretty rusty and I’m hardly acquainted with the Nginx and upload
module source.
So my questions is: was this the right thing to do?

Thanks,
Brendan

Yeah, I know about this problem. I’ll fix it in next version. The better
solution from my point of view sounds:

  •        if(u->output_file.offset + len > ulcf->max_file_size)
    
  •        if(u->output_file.offset + (off_t)len > 
    

ulcf->max_file_size)

Patch is attached.

On Thu, Oct 30, 2008 at 5:39 AM, Valery K. <
[email protected] [email protected]> wrote:

module on a 64-bit system. I tried with both Nginx 0.6.32 and 0.7.19.

if((unsigned int)(u->output_file.offset + len) > ulcf->max_file_size)

My C is pretty rusty and I’m hardly acquainted with the Nginx and upload
module source.
So my questions is: was this the right thing to do?


Best regards,
Valery K.

Thanks Valery! I just put the upload module into production last night.
So
far so good! Thanks for all your hard work on it – it’s a much needed
module.