mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-12 21:05:36 +00:00
Bug 91712: Don't assume filenames have . in them when getting content type for file inputs. Thanks jst, vidur, and av for helping resolve all the subtle edge cases here... r=vidur@netscape.com, sr=jst@netscape.com
This commit is contained in:
parent
0afc122f3a
commit
99e0a68ba1
@ -1319,15 +1319,24 @@ nsFormFrame::GetContentType(char* aPathName, char** aContentType)
|
||||
|
||||
if (aPathName && *aPathName) {
|
||||
// Get file extension and mimetype from that.g936
|
||||
char* fileExt = &aPathName[nsCRT::strlen(aPathName)-1];
|
||||
while (fileExt && (*fileExt != '.')) {
|
||||
fileExt--;
|
||||
char* fileExt = aPathName + nsCRT::strlen(aPathName);
|
||||
while (fileExt > aPathName) {
|
||||
if (*(--fileExt) == '.') {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (fileExt) {
|
||||
nsCOMPtr<nsIMIMEService> MIMEService (do_GetService(NS_MIMESERVICE_CONTRACTID, &rv));
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
if (NS_SUCCEEDED(MIMEService->GetTypeFromExtension(++fileExt, aContentType)))
|
||||
return NS_OK;
|
||||
|
||||
if (*fileExt == '.' && *(fileExt + 1)) {
|
||||
nsCOMPtr<nsIMIMEService> MIMEService =
|
||||
do_GetService(NS_MIMESERVICE_CONTRACTID, &rv);
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
rv = MIMEService->GetTypeFromExtension(fileExt + 1, aContentType);
|
||||
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
return NS_OK;
|
||||
}
|
||||
}
|
||||
}
|
||||
*aContentType = nsCRT::strdup("application/octet-stream");
|
||||
|
Loading…
Reference in New Issue
Block a user