fixed security issues - fixes bug 1307
fixed unicode over network issues
Modified: trunk/reactos/base/services/tcpsvcs/chargen.c
Modified: trunk/reactos/base/services/tcpsvcs/daytime.c
Modified: trunk/reactos/base/services/tcpsvcs/discard.c
Modified: trunk/reactos/base/services/tcpsvcs/echo.c
Modified: trunk/reactos/base/services/tcpsvcs/qotd.c
Modified: trunk/reactos/base/services/tcpsvcs/skelserver.c
Modified: trunk/reactos/base/services/tcpsvcs/tcpsvcs.c
Modified: trunk/reactos/base/services/tcpsvcs/tcpsvcs.h
  _____
Modified: trunk/reactos/base/services/tcpsvcs/chargen.c
--- trunk/reactos/base/services/tcpsvcs/chargen.c       2006-02-02
20:20:51 UTC (rev 72)
+++ trunk/reactos/base/services/tcpsvcs/chargen.c       2006-02-03
17:36:44 UTC (rev 73)
@@ -4,7 +4,7 @@
  * FILE:        /base/services/tcpsvcs/chargen.c
  * PURPOSE:     Provide CharGen, Daytime, Discard, Echo, and Qotd
services
  * COPYRIGHT:   Copyright 2005 - 2006 Ged Murphy <gedmurphy(a)gmail.com>
- *
+ *
  */
 #include "tcpsvcs.h"
@@ -30,7 +30,7 @@
         LogEvent(_T("Chargen: Connection shutdown failed\n"), 0,
FALSE);
         RetVal = 1;
     }
-
+
     LogEvent(_T("Chargen: Terminating thread\n"), 0, FALSE);
     ExitThread(RetVal);
@@ -73,8 +73,8 @@
                 charIndex++;
         }
-        Line[LINESIZ - 2] = L'\r';
-        Line[LINESIZ - 1] = L'\n';
+        Line[LINESIZ - 2] = '\r';
+        Line[LINESIZ - 1] = '\n';
         if (! SendLine(Sock, Line))
             break;
@@ -82,14 +82,14 @@
         /* increment loop index to start printing from next char in
ring */
         loopIndex++;
     }
-
+
     if (bShutDown)
         return FALSE;
     else
         return TRUE;
 }
-BOOL SendLine(SOCKET Sock, TCHAR* Line)
+BOOL SendLine(SOCKET Sock, char* Line)
 {
     INT RetVal;
     INT SentBytes;
  _____
Modified: trunk/reactos/base/services/tcpsvcs/daytime.c
--- trunk/reactos/base/services/tcpsvcs/daytime.c       2006-02-02
20:20:51 UTC (rev 72)
+++ trunk/reactos/base/services/tcpsvcs/daytime.c       2006-02-03
17:36:44 UTC (rev 73)
@@ -4,7 +4,7 @@
  * FILE:        /base/services/tcpsvcs/daytime.c
  * PURPOSE:     Provide CharGen, Daytime, Discard, Echo, and Qotd
services
  * COPYRIGHT:   Copyright 2005 - 2006 Ged Murphy <gedmurphy(a)gmail.com>
- *
+ *
  */
 #include "tcpsvcs.h"
@@ -13,14 +13,14 @@
 {
     struct tm *newtime;
     time_t aclock;
-    TCHAR *pszTime;
+    CHAR *pszTime;
     DWORD RetVal = 0;
     SOCKET Sock = (SOCKET)Sock_;
-
+
     time(&aclock);
     newtime = localtime(&aclock);
-    pszTime = _tasctime(newtime);
-
+    pszTime = asctime(newtime);
+
     SendTime(Sock, pszTime);
     LogEvent(_T("DayTime: Shutting connection down...\n"), 0, FALSE);
@@ -31,17 +31,17 @@
         LogEvent(_T("DayTime: Connection shutdown failed\n"), 0,
FALSE);
         RetVal = 1;
     }
-
+
     LogEvent(_T("DayTime: Terminating thread\n"), 0, FALSE);
     ExitThread(RetVal);
 }
-BOOL SendTime(SOCKET Sock, TCHAR *time)
+BOOL SendTime(SOCKET Sock, CHAR *time)
 {
-    INT StringSize = (INT)_tcsclen(time);
-    INT RetVal = send(Sock, time, sizeof(TCHAR) * StringSize, 0);
-
+    INT StringSize = (INT)strlen(time);
+    INT RetVal = send(Sock, time, sizeof(CHAR) * StringSize, 0);
+
     if (RetVal == SOCKET_ERROR)
         return FALSE;
  _____
Modified: trunk/reactos/base/services/tcpsvcs/discard.c
--- trunk/reactos/base/services/tcpsvcs/discard.c       2006-02-02
20:20:51 UTC (rev 72)
+++ trunk/reactos/base/services/tcpsvcs/discard.c       2006-02-03
17:36:44 UTC (rev 73)
@@ -4,7 +4,7 @@
  * FILE:        /base/services/tcpsvcs/discard.c
  * PURPOSE:     Provide CharGen, Daytime, Discard, Echo, and Qotd
services
  * COPYRIGHT:   Copyright 2005 - 2006 Ged Murphy <gedmurphy(a)gmail.com>
- *
+ *
  */
 #include "tcpsvcs.h"
@@ -30,7 +30,7 @@
         LogEvent(_T("Discard: Connection shutdown failed\n"), 0,
FALSE);
         RetVal = 1;
     }
-
+
     LogEvent(_T("Discard: Terminating thread\n"), 0, FALSE);
     ExitThread(RetVal);
 }
@@ -39,7 +39,7 @@
 BOOL RecieveIncomingPackets(SOCKET Sock)
 {
-    TCHAR ReadBuffer[BUF];
+    char ReadBuffer[BUF];
     TCHAR buf[256];
     INT ReadBytes;
@@ -53,7 +53,7 @@
         }
         else if (ReadBytes == SOCKET_ERROR)
         {
-            _stprintf(buf, ("Socket Error: %d\n"), WSAGetLastError());
+            _stprintf(buf, _T("Socket Error: %d\n"),
WSAGetLastError());
             LogEvent(buf, 0, TRUE);
             return FALSE;
         }
  _____
Modified: trunk/reactos/base/services/tcpsvcs/echo.c
--- trunk/reactos/base/services/tcpsvcs/echo.c  2006-02-02 20:20:51 UTC
(rev 72)
+++ trunk/reactos/base/services/tcpsvcs/echo.c  2006-02-03 17:36:44 UTC
(rev 73)
@@ -4,7 +4,7 @@
  * FILE:        /base/services/tcpsvcs/echo.c
  * PURPOSE:     Provide CharGen, Daytime, Discard, Echo, and Qotd
services
  * COPYRIGHT:   Copyright 2005 - 2006 Ged Murphy <gedmurphy(a)gmail.com>
- *
+ *
  */
 #include "tcpsvcs.h"
@@ -22,7 +22,7 @@
     }
     LogEvent(_T("Echo: Shutting connection down...\n"), 0, FALSE);
-
+
     if (ShutdownConnection(Sock, TRUE))
         LogEvent(_T("Echo: Connection is down\n"), 0, FALSE);
     else
@@ -30,7 +30,7 @@
         LogEvent(_T("Echo: Connection shutdown failed\n"), 0, FALSE);
         RetVal = 1;
     }
-
+
     LogEvent(_T("Echo: Terminating thread\n"), 0, FALSE);
     ExitThread(RetVal);
 }
@@ -39,7 +39,7 @@
 BOOL EchoIncomingPackets(SOCKET Sock)
 {
-    TCHAR ReadBuffer[BUF];
+    char ReadBuffer[BUF];
     TCHAR buf[256]; // temp for holding LogEvent text
     INT Temp;
     INT ReadBytes;
  _____
Modified: trunk/reactos/base/services/tcpsvcs/qotd.c
--- trunk/reactos/base/services/tcpsvcs/qotd.c  2006-02-02 20:20:51 UTC
(rev 72)
+++ trunk/reactos/base/services/tcpsvcs/qotd.c  2006-02-03 17:36:44 UTC
(rev 73)
@@ -4,21 +4,21 @@
  * FILE:        /base/services/tcpsvcs/qotd.c
  * PURPOSE:     Provide CharGen, Daytime, Discard, Echo, and Qotd
services
  * COPYRIGHT:   Copyright 2005 - 2006 Ged Murphy <gedmurphy(a)gmail.com>
- *
+ *
  */
 #include "tcpsvcs.h"
-#define QBUFSIZ 160
+#define QBUFSIZ 60
-LPCTSTR FilePath = _T("\\drivers\\etc\\quotes");
+LPCTSTR FilePath = _T("\\drivers\\etc\\quotes"); /* 19 chars */
 DWORD WINAPI QotdHandler(VOID* Sock_)
 {
     FILE *fp;
     SOCKET Sock;
-    TCHAR Sys[MAX_PATH];
-    TCHAR Quote[60][BUFSIZ]; // need to set this dynamically
+    TCHAR Sys[MAX_PATH + 20];
+    char Quote[QBUFSIZ][BUFSIZ]; // need to set this dynamically
     INT QuoteToPrint;
     INT NumQuotes;
@@ -29,15 +29,15 @@
        LogEvent(_T("QOTD: Getting system path failed.\n"), 0, TRUE);
        ExitThread(1);
     }
-
-    _tcscat(Sys, FilePath);
+    _tcsncat(Sys, FilePath, _tcslen(FilePath));
+
     LogEvent(_T("QOTD: Opening quotes file\n"), 0, FALSE);
-    if ((fp = _tfopen(Sys, "r")) == NULL)
+    if ((fp = _tfopen(Sys, _T("r"))) == NULL)
     {
-               TCHAR buf[256];
+               TCHAR buf[320];
-               _stprintf(buf, _T("QOTD: Error opening quote file :
%s\n"), Sys);
+               _sntprintf(buf, 320, _T("QOTD: Error opening quote file
: %s\n"), Sys);
         LogEvent(buf, 0, TRUE);
         LogEvent(_T("QOTD: Terminating thread\n"), 0, FALSE);
         ExitThread(1);
@@ -45,7 +45,8 @@
     /* read all quotes in the file into an array */
     NumQuotes = 0;
-    while (_fgetts(Quote[NumQuotes], QBUFSIZ, fp) != NULL)
+    while ((fgets(Quote[NumQuotes], QBUFSIZ, fp) != NULL) &&
+           (NumQuotes != QBUFSIZ))
         NumQuotes++;
     LogEvent(_T("QOTD: Closing quotes file\n"), 0, FALSE);
@@ -68,21 +69,20 @@
         LogEvent(_T("QOTD: Terminating thread\n"), 0, FALSE);
         ExitThread(1);
     }
-
+
     LogEvent(_T("QOTD: Terminating thread\n"), 0, FALSE);
     ExitThread(0);
-    //return Retval;
 }
-BOOL SendQuote(SOCKET Sock, TCHAR* Quote)
+BOOL SendQuote(SOCKET Sock, char* Quote)
 {
     INT StringSize;
     INT RetVal;
-    StringSize = (INT)_tcsclen(Quote);
-    RetVal = send(Sock, Quote, sizeof(TCHAR) * StringSize, 0);
+    StringSize = (INT)strlen(Quote);
+    RetVal = send(Sock, Quote, sizeof(char) * StringSize, 0);
     if (RetVal == SOCKET_ERROR)
         return FALSE;
  _____
Modified: trunk/reactos/base/services/tcpsvcs/skelserver.c
--- trunk/reactos/base/services/tcpsvcs/skelserver.c    2006-02-02
20:20:51 UTC (rev 72)
+++ trunk/reactos/base/services/tcpsvcs/skelserver.c    2006-02-03
17:36:44 UTC (rev 73)
@@ -4,7 +4,7 @@
  * FILE:        /base/services/tcpsvcs/skelserver.c
  * PURPOSE:     Provide CharGen, Daytime, Discard, Echo, and Qotd
services
  * COPYRIGHT:   Copyright 2005 - 2006 Ged Murphy <gedmurphy(a)gmail.com>
- *
+ *
  */
 #include "tcpsvcs.h"
@@ -24,7 +24,7 @@
     ListeningSocket = SetUpListener(htons(pServices->Port));
     if (ListeningSocket == INVALID_SOCKET)
     {
-               LogEvent("Socket error when setting up listener\n", 0,
TRUE);
+               LogEvent(_T("Socket error when setting up listener\n"),
0, TRUE);
         return 3;
     }
@@ -131,7 +131,7 @@
                                        }
                                        WaitForSingleObject(hThread,
INFINITE);
-
+
                                        CloseHandle(hThread);
                                }
                                else
  _____
Modified: trunk/reactos/base/services/tcpsvcs/tcpsvcs.c
--- trunk/reactos/base/services/tcpsvcs/tcpsvcs.c       2006-02-02
20:20:51 UTC (rev 72)
+++ trunk/reactos/base/services/tcpsvcs/tcpsvcs.c       2006-02-03
17:36:44 UTC (rev 73)
@@ -4,7 +4,7 @@
  * FILE:        /base/services/tcpsvcs/tcpsvcs.c
  * PURPOSE:     Provide CharGen, Daytime, Discard, Echo, and Qotd
services
  * COPYRIGHT:   Copyright 2005 - 2006 Ged Murphy <gedmurphy(a)gmail.com>
- *
+ *
  */
 /*
  * TODO:
@@ -31,7 +31,7 @@
 BOOL bShutDown = FALSE;
 BOOL bPause = FALSE;
-LPCTSTR LogFileName = "\\tcpsvcs_log.log";
+LPCTSTR LogFileName = _T("\\tcpsvcs_log.log");
 LPTSTR ServiceName = _T("Simp Tcp");
 //LPTSTR DisplayName = _T("Simple TCP/IP Services");
@@ -69,19 +69,19 @@
 VOID WINAPI
 ServiceMain(DWORD argc, LPTSTR argv[])
 {
-       TCHAR LogFilePath[MAX_PATH];
+       TCHAR LogFilePath[MAX_PATH + 17];
     if(! GetSystemDirectory(LogFilePath, MAX_PATH))
         return;
-    _tcscat(LogFilePath, LogFileName);
+    _tcsncat(LogFilePath, LogFileName, 17);
-       hLogFile = fopen(LogFilePath, _T("a+"));
+       hLogFile = _tfopen(LogFilePath, _T("a+"));
     if (hLogFile == NULL)
     {
-        TCHAR buf[50];
+        TCHAR buf[300];
-        _stprintf(buf, _T("Could not open log file: %s\n"),
LogFilePath);
+        _sntprintf(buf, 300, _T("Could not open log file: %s\n"),
LogFilePath);
         MessageBox(NULL, buf, NULL, MB_OK);
         return;
     }
@@ -120,7 +120,7 @@
        UpdateStatus (SERVICE_STOPPED, 0);
        LogEvent(_T("Service status set to SERVICE_STOPPED\n"), 0,
FALSE);
        LogEvent(_T("Leaving ServiceMain\n"), 0, FALSE);
-
+
        fclose(hLogFile);
        return;
@@ -232,10 +232,10 @@
     {
         CloseHandle(hThread[i]);
     }
-
+
     LogEvent(_T("Detaching Winsock2...\n"), 0, FALSE);
     WSACleanup();
-
+
     return 0;
 }
@@ -247,7 +247,7 @@
 {
        DWORD eMsgLen, ErrNum = GetLastError ();
        LPTSTR lpvSysMsg;
-       TCHAR MessageBuffer[512];
+       TCHAR MessageBuffer[1024];
@@ -258,16 +258,16 @@
                        ErrNum, MAKELANGID (LANG_NEUTRAL,
SUBLANG_DEFAULT),
                        (LPTSTR)&lpvSysMsg, 0, NULL);
-               _stprintf(MessageBuffer, _T("%s %s ErrNum = %lu.
ExitCode = %d."),
+               _sntprintf(MessageBuffer, 1024, _T("%s %s ErrNum = %lu.
ExitCode = %d."),
                        UserMessage, lpvSysMsg, ErrNum, ExitCode);
                HeapFree(GetProcessHeap (), 0, lpvSysMsg);
        }
     else
     {
-               _stprintf(MessageBuffer, _T("%s"), UserMessage);
+               _sntprintf(MessageBuffer, 1024, _T("%s"), UserMessage);
        }
-       fputs (MessageBuffer, hLogFile);
+       _fputts(MessageBuffer, hLogFile);
        if (ExitCode != 0)
                ExitProcess(ExitCode);
  _____
Modified: trunk/reactos/base/services/tcpsvcs/tcpsvcs.h
--- trunk/reactos/base/services/tcpsvcs/tcpsvcs.h       2006-02-02
20:20:51 UTC (rev 72)
+++ trunk/reactos/base/services/tcpsvcs/tcpsvcs.h       2006-02-03
17:36:44 UTC (rev 73)
@@ -4,7 +4,7 @@
  * FILE:        /base/services/tcpsvcs/tcpsvcs.h
  * PURPOSE:     Provide CharGen, Daytime, Discard, Echo, and Qotd
services
  * COPYRIGHT:   Copyright 2005 - 2006 Ged Murphy <gedmurphy(a)gmail.com>
- *
+ *
  */
 #include <stdio.h>
@@ -12,9 +12,6 @@
 #include <tchar.h>
 #include <time.h>
-#define UNICODE
-#define _UNICODE
-
 /* default port numbers */
 #define ECHO_PORT 7
 #define DISCARD_PORT 9
@@ -63,11 +60,11 @@
 /* chargen functions */
 DWORD WINAPI ChargenHandler(VOID* Sock_);
 BOOL GenerateChars(SOCKET Sock);
-BOOL SendLine(SOCKET Sock, TCHAR* Line);
+BOOL SendLine(SOCKET Sock, char* Line);
 /* daytime functions */
 DWORD WINAPI DaytimeHandler(VOID* Sock_);
-BOOL SendTime(SOCKET Sock, TCHAR *time);
+BOOL SendTime(SOCKET Sock, char *time);
 /* echo functions */
 DWORD WINAPI EchoHandler(VOID* Sock_);
@@ -79,4 +76,4 @@
 /* qotd functions */
 DWORD WINAPI QotdHandler(VOID* Sock_);
-BOOL SendQuote(SOCKET Sock, TCHAR* Quote);
+BOOL SendQuote(SOCKET Sock, char* Quote);