X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/1d433d4506113c95285f633e3553ff62d4cfd05d..a9abe1fdea5ccf67aaccab6fdde300d6fcf2d15a:/Projects/Webserver/Lib/HTTPServerApp.c diff --git a/Projects/Webserver/Lib/HTTPServerApp.c b/Projects/Webserver/Lib/HTTPServerApp.c index 8548045df..9ee514d0d 100644 --- a/Projects/Webserver/Lib/HTTPServerApp.c +++ b/Projects/Webserver/Lib/HTTPServerApp.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2011. + Copyright (C) Dean Camera, 2012. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2011 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2012 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -47,7 +47,7 @@ const char PROGMEM HTTP200Header[] = "HTTP/1.1 200 OK\r\n" "Content-Type: "; /** HTTP server response header, for transmission before a resource not found error. This indicates to the host that the given - * given URL is invalid, and gives extra error information. + * URL is invalid, and gives extra error information. */ const char PROGMEM HTTP404Header[] = "HTTP/1.1 404 Not Found\r\n" "Server: LUFA " LUFA_VERSION_STRING "\r\n" @@ -181,22 +181,16 @@ static void HTTPServerApp_OpenRequestedFile(void) } /* Copy over the requested filename */ - strncpy(AppState->HTTPServer.FileName, &RequestedFileName[1], (sizeof(AppState->HTTPServer.FileName) - 1)); - - /* Ensure filename is null-terminated */ - AppState->HTTPServer.FileName[sizeof(AppState->HTTPServer.FileName) - 1] = 0x00; + strlcpy(AppState->HTTPServer.FileName, &RequestedFileName[1], sizeof(AppState->HTTPServer.FileName)); /* Determine the length of the URI so that it can be checked to see if it is a directory */ uint8_t FileNameLen = strlen(AppState->HTTPServer.FileName); /* If the URI is a directory, append the default filename */ - if (AppState->HTTPServer.FileName[FileNameLen - 1] == '/') + if ((AppState->HTTPServer.FileName[FileNameLen - 1] == '/') || !(FileNameLen)) { - strncpy_P(&AppState->HTTPServer.FileName[FileNameLen], DefaultDirFileName, + strlcpy_P(&AppState->HTTPServer.FileName[FileNameLen], DefaultDirFileName, (sizeof(AppState->HTTPServer.FileName) - FileNameLen)); - - /* Ensure altered filename is still null-terminated */ - AppState->HTTPServer.FileName[sizeof(AppState->HTTPServer.FileName) - 1] = 0x00; } /* Try to open the file from the Dataflash disk */ @@ -224,7 +218,7 @@ static void HTTPServerApp_SendResponseHeader(void) { /* Copy over the HTTP 404 response header and send it to the receiving client */ strcpy_P(AppData, HTTP404Header); - strcpy(&AppData[strlen(AppData)], AppState->HTTPServer.FileName); + strcat(AppData, AppState->HTTPServer.FileName); uip_send(AppData, strlen(AppData)); AppState->HTTPServer.NextState = WEBSERVER_STATE_Closing; @@ -242,7 +236,7 @@ static void HTTPServerApp_SendResponseHeader(void) { if (strcmp(&Extension[1], MIMETypes[i].Extension) == 0) { - strcpy(&AppData[strlen(AppData)], MIMETypes[i].MIMEType); + strcat(AppData, MIMETypes[i].MIMEType); FoundMIMEType = true; break; } @@ -253,11 +247,11 @@ static void HTTPServerApp_SendResponseHeader(void) if (!(FoundMIMEType)) { /* MIME type not found - copy over the default MIME type */ - strcpy_P(&AppData[strlen(AppData)], DefaultMIMEType); + strcat_P(AppData, DefaultMIMEType); } /* Add the end-of-line terminator and end-of-headers terminator after the MIME type */ - strcpy_P(&AppData[strlen(AppData)], PSTR("\r\n\r\n")); + strcat_P(AppData, PSTR("\r\n\r\n")); /* Send the MIME header to the receiving client */ uip_send(AppData, strlen(AppData));