int
-mime_decode(uschar **listptr)
+mime_decode(const uschar **listptr)
{
int sep = 0;
-uschar *list = *listptr;
+const uschar *list = *listptr;
uschar *option;
uschar option_buffer[1024];
uschar decode_path[1024];
NEXT_PARAM_SEARCH:
while (*p)
{
+ /* debug_printf(" considering paramlist '%s'\n", p); */
mime_parameter * mp;
for (mp = mime_parameter_list;
mp < &mime_parameter_list[mime_parameter_list_size];
param_value = rfc2047_decode(param_value,
check_rfc2047_length, NULL, 32, NULL, &dummy);
- debug_printf("Found %s MIME parameter in %s header, "
+ debug_printf(" Found %s MIME parameter in %s header, "
"value is '%s'\n", mp->name, mime_header_list[i].name,
param_value);
}
goto NEXT_PARAM_SEARCH;
}
}
- /* There is something, but not one of our interesting parameters.
- Advance to the next semicolon */
- while(*p != ';')
+ /* There is something, but not one of our interesting parameters.
+ Advance to the next unquoted semicolon */
+ while(*p && *p != ';')
+ if (*p == '"')
{
- if (*p == '"') while(*++p && *p != '"') ;
- p++;
+ while(*++p && *p != '"') ;
+ if (*p) p++;
}
- p++;
+ else
+ p++;
+ if (*p) p++;
}
}
}
else if ( (mime_content_type != NULL) &&
(Ustrncmp(mime_content_type,"message/rfc822",14) == 0) )
{
- uschar *rfc822name = NULL;
+ const uschar *rfc822name = NULL;
uschar filename[2048];
int file_nr = 0;
int result = 0;