--- src/main.c.orig	2010-07-17 12:30:17.000000000 -0500
+++ src/main.c	2010-07-17 12:36:32.000000000 -0500
@@ -4388,6 +4388,7 @@
   const char* str = (char*)ptr;
   const size_t cb = size*nmemb;
   const char* end = (char*)ptr + cb;
+  size_t len;
 
   if (cb > 20 && curlx_strnequal(str, "Content-disposition:", 20)) {
     char *p = (char*)str + 20;
@@ -4409,7 +4410,8 @@
         continue;
       }
       p+=9;
-      filename = parse_filename(p, cb - (p - str));
+      len = strchr(p, ';') ? strchr(p, ';') - p : cb - (p - str);
+      filename = parse_filename(p, len);
       if (filename) {
         outs->filename = filename;
         break;
