security fix: replaced strcpy with safeStrCpy from backend.c
[xboard.git] / args.h
diff --git a/args.h b/args.h
index 04f2c23..9d3530f 100644 (file)
--- a/args.h
+++ b/args.h
@@ -540,18 +540,23 @@ ArgDescriptor argDescriptors[] = {
   { "polyglotDir", ArgFilename, (void *) &appData.polyglotDir, TRUE, (ArgIniType) "" },
   { "usePolyglotBook", ArgBoolean, (void *) &appData.usePolyglotBook, TRUE, (ArgIniType) FALSE },
   { "polyglotBook", ArgFilename, (void *) &appData.polyglotBook, TRUE, (ArgIniType) "" },
+  { "bookDepth", ArgInt, (void *) &appData.bookDepth, TRUE, (ArgIniType) 12 }, 
+  { "bookVariation", ArgInt, (void *) &appData.bookStrength, TRUE, (ArgIniType) 50 }, 
   { "defaultHashSize", ArgInt, (void *) &appData.defaultHashSize, TRUE, (ArgIniType) 64 }, 
   { "defaultCacheSizeEGTB", ArgInt, (void *) &appData.defaultCacheSizeEGTB, TRUE, (ArgIniType) 4 },
   { "defaultPathEGTB", ArgFilename, (void *) &appData.defaultPathEGTB, TRUE, (ArgIniType) "c:\\egtb" },
+  { "language", ArgFilename, (void *) &appData.language, TRUE, (ArgIniType) "" },
 
   /* [HGM] board-size, adjudication and misc. options */
   { "oneClickMove", ArgBoolean, (void *) &appData.oneClick, TRUE, (ArgIniType) FALSE },
-  { "boardWidth", ArgInt, (void *) &appData.NrFiles, TRUE, (ArgIniType) -1 },
-  { "boardHeight", ArgInt, (void *) &appData.NrRanks, TRUE, (ArgIniType) -1 },
-  { "holdingsSize", ArgInt, (void *) &appData.holdingsSize, TRUE, (ArgIniType) -1 },
+  { "boardWidth", ArgInt, (void *) &appData.NrFiles, FALSE, (ArgIniType) -1 },
+  { "boardHeight", ArgInt, (void *) &appData.NrRanks, FALSE, (ArgIniType) -1 },
+  { "holdingsSize", ArgInt, (void *) &appData.holdingsSize, FALSE, (ArgIniType) -1 },
+  { "defaultMatchGames", ArgInt, (void *) &appData.defaultMatchGames, TRUE, (ArgIniType) 10 },
   { "matchPause", ArgInt, (void *) &appData.matchPause, TRUE, (ArgIniType) 10000 },
   { "pieceToCharTable", ArgString, (void *) &appData.pieceToCharTable, FALSE, INVALID },
   { "pieceNickNames", ArgString, (void *) &appData.pieceNickNames, FALSE, INVALID },
+  { "colorNickNames", ArgString, (void *) &appData.colorNickNames, FALSE, INVALID },
   { "flipBlack", ArgBoolean, (void *) &appData.upsideDown, TRUE, (ArgIniType) FALSE },
   { "allWhite", ArgBoolean, (void *) &appData.allWhite, TRUE, (ArgIniType) FALSE },
   { "alphaRank", ArgBoolean, (void *) &appData.alphaRank, FALSE, (ArgIniType) FALSE },
@@ -811,7 +816,7 @@ ParseArgs(GetFunc get, void *cl)
     } else {
       /* Positional argument */
       ad = &argDescriptors[posarg++];
-      strcpy(argName, ad->argName);
+      strncpy(argName, ad->argName,sizeof(argName)/sizeof(argName[0]));
     }
 
     if (ad->argType == ArgTrue) {
@@ -1372,7 +1377,7 @@ GetArgValue(char *name)
   switch(ad->argType) {
     case ArgString:
     case ArgFilename:
-      strcpy(name, *(char**) ad->argLoc);
+      strncpy(name, *(char**) ad->argLoc, MSG_SIZ);
       return TRUE;
     case ArgInt:
       sprintf(name, "%d", *(int*) ad->argLoc);