Flawfinder version 2.0.10, (C) 2001-2019 David A. Wheeler. Number of rules (primarily dangerous function names) in C/C++ ruleset: 223 Examining data/powder-118+dfsg1/support/builddpdf/dpdf.cpp Examining data/powder-118+dfsg1/support/builddpdf/dpdf.h Examining data/powder-118+dfsg1/support/builddpdf/builddpdf.cpp Examining data/powder-118+dfsg1/support/compendium/compendium.cpp Examining data/powder-118+dfsg1/support/compendium/mygba.h Examining data/powder-118+dfsg1/support/encyclopedia2c/stdafx.cpp Examining data/powder-118+dfsg1/support/encyclopedia2c/stdafx.h Examining data/powder-118+dfsg1/support/encyclopedia2c/encyclopedia2c.cpp Examining data/powder-118+dfsg1/support/splicebmp/stdafx.cpp Examining data/powder-118+dfsg1/support/splicebmp/stdafx.h Examining data/powder-118+dfsg1/support/splicebmp/splicebmp.cpp Examining data/powder-118+dfsg1/support/enummaker/StdAfx.h Examining data/powder-118+dfsg1/support/enummaker/StdAfx.cpp Examining data/powder-118+dfsg1/support/enummaker/enummaker.cpp Examining data/powder-118+dfsg1/support/bmp2c/stdafx.cpp Examining data/powder-118+dfsg1/support/bmp2c/stdafx.h Examining data/powder-118+dfsg1/support/bmp2c/bmp2c.cpp Examining data/powder-118+dfsg1/support/map2c/stdafx.cpp Examining data/powder-118+dfsg1/support/map2c/stdafx.h Examining data/powder-118+dfsg1/support/map2c/map2c.cpp Examining data/powder-118+dfsg1/support/txt2c/txt2c.cpp Examining data/powder-118+dfsg1/support/txt2c/StdAfx.h Examining data/powder-118+dfsg1/support/txt2c/StdAfx.cpp Examining data/powder-118+dfsg1/support/tile2c/bmp.h Examining data/powder-118+dfsg1/support/tile2c/tile2c.cpp Examining data/powder-118+dfsg1/support/tile2c/bmp.cpp Examining data/powder-118+dfsg1/queue.h Examining data/powder-118+dfsg1/stylus.h Examining data/powder-118+dfsg1/sramstream.cpp Examining data/powder-118+dfsg1/grammar.h Examining data/powder-118+dfsg1/ptrlist.cpp Examining data/powder-118+dfsg1/thread_linux.cpp Examining data/powder-118+dfsg1/name.cpp Examining data/powder-118+dfsg1/creature.h Examining data/powder-118+dfsg1/hiscore.h Examining data/powder-118+dfsg1/stylus.cpp Examining data/powder-118+dfsg1/bmp.h Examining data/powder-118+dfsg1/signpost.cpp Examining data/powder-118+dfsg1/input.h Examining data/powder-118+dfsg1/assert.cpp Examining data/powder-118+dfsg1/hiscore.cpp Examining data/powder-118+dfsg1/item.cpp Examining data/powder-118+dfsg1/artifact.cpp Examining data/powder-118+dfsg1/msg.h Examining data/powder-118+dfsg1/mt19937ar.c Examining data/powder-118+dfsg1/piety.cpp Examining data/powder-118+dfsg1/itemstack.cpp Examining data/powder-118+dfsg1/artifact.h Examining data/powder-118+dfsg1/rand.h Examining data/powder-118+dfsg1/bmp.cpp Examining data/powder-118+dfsg1/dpdf_table.cpp Examining data/powder-118+dfsg1/signpost.h Examining data/powder-118+dfsg1/dpdf_table.h Examining data/powder-118+dfsg1/speed.h Examining data/powder-118+dfsg1/map.cpp Examining data/powder-118+dfsg1/map.h Examining data/powder-118+dfsg1/input.cpp Examining data/powder-118+dfsg1/thread_win.h Examining data/powder-118+dfsg1/main.cpp Examining data/powder-118+dfsg1/action.cpp Examining data/powder-118+dfsg1/control.h Examining data/powder-118+dfsg1/mobref.h Examining data/powder-118+dfsg1/ai.cpp Examining data/powder-118+dfsg1/itemstack.h Examining data/powder-118+dfsg1/build.cpp Examining data/powder-118+dfsg1/sramstream.h Examining data/powder-118+dfsg1/smokestack.cpp Examining data/powder-118+dfsg1/smokestack.h Examining data/powder-118+dfsg1/encyc_support.cpp Examining data/powder-118+dfsg1/control.cpp Examining data/powder-118+dfsg1/gfx/all_bitmaps.cpp Examining data/powder-118+dfsg1/gfx/all_bitmaps.h Examining data/powder-118+dfsg1/item.h Examining data/powder-118+dfsg1/thread.cpp Examining data/powder-118+dfsg1/gfxengine.h Examining data/powder-118+dfsg1/grammar.cpp Examining data/powder-118+dfsg1/speed.cpp Examining data/powder-118+dfsg1/thread.h Examining data/powder-118+dfsg1/ptrlist.h Examining data/powder-118+dfsg1/intrinsic.cpp Examining data/powder-118+dfsg1/piety.h Examining data/powder-118+dfsg1/name.h Examining data/powder-118+dfsg1/encyc_support.h Examining data/powder-118+dfsg1/buf.h Examining data/powder-118+dfsg1/rand.cpp Examining data/powder-118+dfsg1/victory.h Examining data/powder-118+dfsg1/buf.cpp Examining data/powder-118+dfsg1/thread_linux.h Examining data/powder-118+dfsg1/assert.h Examining data/powder-118+dfsg1/victory.cpp Examining data/powder-118+dfsg1/creature.cpp Examining data/powder-118+dfsg1/intrinsic.h Examining data/powder-118+dfsg1/gfxengine.cpp Examining data/powder-118+dfsg1/thread_win.cpp Examining data/powder-118+dfsg1/port/linux/linuxmain.cpp Examining data/powder-118+dfsg1/port/mac/macmain.cpp Examining data/powder-118+dfsg1/port/mac/SDLMain.h Examining data/powder-118+dfsg1/port/gba/gbamain.cpp Examining data/powder-118+dfsg1/port/gba/hamfake.h Examining data/powder-118+dfsg1/port/gba/mygba.h Examining data/powder-118+dfsg1/port/gba/hamfake.cpp Examining data/powder-118+dfsg1/port/android/powder/jni/powder-jni.cpp Examining data/powder-118+dfsg1/port/windows/winmain.cpp Examining data/powder-118+dfsg1/port/ds/dsmain.cpp Examining data/powder-118+dfsg1/port/ds/hamfake.h Examining data/powder-118+dfsg1/port/ds/mygba.h Examining data/powder-118+dfsg1/port/ds/hamfake.cpp Examining data/powder-118+dfsg1/port/sdl/hamfake.h Examining data/powder-118+dfsg1/port/sdl/mygba.h Examining data/powder-118+dfsg1/port/sdl/hamfake.cpp Examining data/powder-118+dfsg1/port/gp2x/hamfake.h Examining data/powder-118+dfsg1/port/gp2x/mygba.h Examining data/powder-118+dfsg1/port/gp2x/gp2x.h Examining data/powder-118+dfsg1/port/gp2x/hamfake.cpp Examining data/powder-118+dfsg1/port/psp/hamfake.h Examining data/powder-118+dfsg1/port/psp/pspmain.cpp Examining data/powder-118+dfsg1/port/psp/mygba.h Examining data/powder-118+dfsg1/port/psp/hamfake.cpp Examining data/powder-118+dfsg1/mobref.cpp Examining data/powder-118+dfsg1/msg.cpp FINAL RESULTS: data/powder-118+dfsg1/action.cpp:3589:11: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("You have %d free %s %s.", data/powder-118+dfsg1/action.cpp:3596:11: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("You have %d free %s %s.", data/powder-118+dfsg1/action.cpp:3619:7: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). strcpy(options[i], intrinsicFromWhatLetter((INTRINSIC_NAMES) glb_spelldefs[spell].intrinsic)); data/powder-118+dfsg1/action.cpp:3621:7: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). strcat(options[i], glb_spelldefs[spell].name); data/powder-118+dfsg1/action.cpp:3635:7: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). strcpy(options[i], intrinsicFromWhatLetter((INTRINSIC_NAMES) glb_skilldefs[skill].intrinsic)); data/powder-118+dfsg1/action.cpp:3637:7: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). strcat(options[i], glb_skilldefs[skill].name); data/powder-118+dfsg1/action.cpp:3730:17: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. spelltext.sprintf("Learn %s?", name); data/powder-118+dfsg1/action.cpp:4518:8: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("The blob %s %s.", data/powder-118+dfsg1/action.cpp:4625:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("Mind acid coats %s %s.", data/powder-118+dfsg1/action.cpp:4671:11: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("The %s seems unaffected.", data/powder-118+dfsg1/action.cpp:5396:11: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("The ray hits the %s.", directionflavour); data/powder-118+dfsg1/action.cpp:6267:7: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("A strong wind blows from the %s. ", data/powder-118+dfsg1/action.cpp:6623:11: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("Shadowy tendrils yank the soul from %s and infuse it in %s.", data/powder-118+dfsg1/action.cpp:6667:7: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("The wall collapses, reforming itself with the soul of %s.", data/powder-118+dfsg1/action.cpp:7232:10: [4] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. buf.sprintf("Where do you want to teleport?"); data/powder-118+dfsg1/action.cpp:8500:8: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("Knowing %s prevents %s from being forgotten.", data/powder-118+dfsg1/action.cpp:8561:8: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("Knowing %s prevents %s from being forgotten.", data/powder-118+dfsg1/artifact.cpp:180:9: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). buf.strcpy(syllables[syl]); data/powder-118+dfsg1/artifact.cpp:182:9: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(syllables[syl]); data/powder-118+dfsg1/artifact.cpp:188:10: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(syllables[rand_choice(num_syllable)]); data/powder-118+dfsg1/artifact.cpp:190:10: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(syllables[syl]); data/powder-118+dfsg1/assert.cpp:52:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s: %d", file, line); data/powder-118+dfsg1/bmp.cpp:25:17: [4] (format) printf: If format strings can be influenced by an attacker, they can be exploited (CWE-134). Use a constant for the format specification. #define iprintf printf data/powder-118+dfsg1/bmp.cpp:378:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("gfx/%s.bmp", aname[anum]); data/powder-118+dfsg1/buf.cpp:129:7: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). ::strcpy(text, myData); data/powder-118+dfsg1/buf.cpp:215:6: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). BUF::strcpy(const char *src) data/powder-118+dfsg1/buf.cpp:225:4: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). ::strcpy(text, src); data/powder-118+dfsg1/buf.cpp:253:6: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). BUF::strcat(const char *src) data/powder-118+dfsg1/buf.cpp:262:2: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). strcpy(src); data/powder-118+dfsg1/buf.cpp:277:7: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). ::strcat(myBuffer->data(), src); data/powder-118+dfsg1/buf.cpp:287:5: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). strcat(s); data/powder-118+dfsg1/buf.cpp:350:14: [4] (format) vsnprintf: If format strings can be influenced by an attacker, they can be exploited, and note that sprintf variations do not always \0-terminate (CWE-134). Use a constant for the format specification. result = vsnprintf(str, size, format, ap_copy); data/powder-118+dfsg1/buf.cpp:357:6: [4] (format) vsprintf: Potential format string problem (CWE-134). Make format string constant. BUF::vsprintf(const char *fmt, va_list ap) data/powder-118+dfsg1/buf.cpp:400:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. BUF::sprintf(const char *fmt, ...) data/powder-118+dfsg1/buf.cpp:406:14: [4] (format) vsprintf: Potential format string problem (CWE-134). Make format string constant. result = vsprintf(fmt, marker); data/powder-118+dfsg1/buf.cpp:420:22: [4] (format) vsprintf: Potential format string problem (CWE-134). Make format string constant. result = newtext.vsprintf(fmt, marker); data/powder-118+dfsg1/buf.cpp:423:5: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). strcat(newtext); data/powder-118+dfsg1/buf.cpp:470:4: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). ::strcpy(text, myBuffer->buffer()); data/powder-118+dfsg1/buf.h:63:10: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). void strcpy(const char *text); data/powder-118+dfsg1/buf.h:64:10: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). void strcpy(BUF buf) data/powder-118+dfsg1/buf.h:79:10: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). void strcat(const char *text); data/powder-118+dfsg1/buf.h:80:10: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). void strcat(BUF buf) data/powder-118+dfsg1/buf.h:81:5: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). { strcat(buf.buffer()); } data/powder-118+dfsg1/buf.h:89:10: [4] (format) vsprintf: Potential format string problem (CWE-134). Make format string constant. int vsprintf(const char *fmt, va_list ap); data/powder-118+dfsg1/buf.h:90:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. int sprintf(const char *fmt, ...); data/powder-118+dfsg1/creature.cpp:797:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%x ", rand_hashstring(glbAvatarName)); data/powder-118+dfsg1/creature.cpp:1077:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s - %d: %d. ", data/powder-118+dfsg1/creature.cpp:1090:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%d of %d, ", guess, total); data/powder-118+dfsg1/creature.cpp:1107:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%d. ", def); data/powder-118+dfsg1/creature.cpp:1170:9: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). buf.strcpy(syllable[rand_choice(n)]); data/powder-118+dfsg1/creature.cpp:1172:6: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(syllable[rand_choice(n)]); data/powder-118+dfsg1/creature.cpp:4933:11: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%%U <grow> into %s%s!", data/powder-118+dfsg1/creature.cpp:4968:11: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%%U <learn> %s!", data/powder-118+dfsg1/creature.cpp:5563:8: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(self->getName(true, true, false)); data/powder-118+dfsg1/creature.cpp:5565:8: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(selfitem->getName(true, false, false, false, forcesingle)); data/powder-118+dfsg1/creature.cpp:5567:8: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat("something"); data/powder-118+dfsg1/creature.cpp:5573:8: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(mob->getReflexive()); data/powder-118+dfsg1/creature.cpp:5575:8: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(mob->getName(true, true, false)); data/powder-118+dfsg1/creature.cpp:5578:11: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(item->getName(true, false, false, false, forcesingle)); data/powder-118+dfsg1/creature.cpp:5589:7: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(*buflist[bufnum]); data/powder-118+dfsg1/creature.cpp:5598:8: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(self->getName(true, true, false)); data/powder-118+dfsg1/creature.cpp:5600:8: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(selfitem->getName(true, false, false, false, forcesingle)); data/powder-118+dfsg1/creature.cpp:5602:8: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat("something"); data/powder-118+dfsg1/creature.cpp:5608:8: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(mob->getReflexive()); data/powder-118+dfsg1/creature.cpp:5610:8: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(mob->getName(true, true, false)); data/powder-118+dfsg1/creature.cpp:5613:11: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(item->getName(true, false, false, true, forcesingle)); data/powder-118+dfsg1/creature.cpp:5621:8: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(self->getName(false, false, false)); data/powder-118+dfsg1/creature.cpp:5623:8: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(selfitem->getName(false, false, false, false, forcesingle)); data/powder-118+dfsg1/creature.cpp:5625:8: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat("something"); data/powder-118+dfsg1/creature.cpp:5631:8: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(mob->getReflexive()); data/powder-118+dfsg1/creature.cpp:5633:8: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(mob->getName(false, false, false)); data/powder-118+dfsg1/creature.cpp:5636:11: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(item->getName(false, false, false, false, forcesingle)); data/powder-118+dfsg1/creature.cpp:5644:8: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(gram_makepossessive(self->getName(true, true, false))); data/powder-118+dfsg1/creature.cpp:5646:8: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(gram_makepossessive(selfitem->getName(true, false, false, false, forcesingle))); data/powder-118+dfsg1/creature.cpp:5648:8: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat("something's"); data/powder-118+dfsg1/creature.cpp:5651:11: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(gram_makepossessive(mob->getName(true, true, false))); data/powder-118+dfsg1/creature.cpp:5653:11: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(gram_makepossessive(item->getName(true, false, false, false, forcesingle))); data/powder-118+dfsg1/creature.cpp:5661:8: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(self->getPossessive()); data/powder-118+dfsg1/creature.cpp:5663:8: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(selfitem->getPossessive()); data/powder-118+dfsg1/creature.cpp:5665:8: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat("its"); data/powder-118+dfsg1/creature.cpp:5668:11: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(mob->getPossessive()); data/powder-118+dfsg1/creature.cpp:5670:11: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(item->getPossessive()); data/powder-118+dfsg1/creature.cpp:5678:8: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(self->getAccusative()); data/powder-118+dfsg1/creature.cpp:5680:8: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(selfitem->getAccusative()); data/powder-118+dfsg1/creature.cpp:5682:8: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat("something"); data/powder-118+dfsg1/creature.cpp:5685:11: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(mob->getAccusative()); data/powder-118+dfsg1/creature.cpp:5687:11: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(item->getAccusative()); data/powder-118+dfsg1/creature.cpp:5695:8: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(self->getPronoun()); data/powder-118+dfsg1/creature.cpp:5697:8: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(selfitem->getPronoun()); data/powder-118+dfsg1/creature.cpp:5699:8: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat("it"); data/powder-118+dfsg1/creature.cpp:5702:11: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(mob->getPronoun()); data/powder-118+dfsg1/creature.cpp:5704:11: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(item->getPronoun()); data/powder-118+dfsg1/creature.cpp:5774:8: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(self->conjugate(verbbuf.buffer())); data/powder-118+dfsg1/creature.cpp:5776:8: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(selfitem->conjugate(verbbuf.buffer())); data/powder-118+dfsg1/creature.cpp:5778:8: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(gram_conjugate(verbbuf, VERB_IT)); data/powder-118+dfsg1/creature.cpp:5781:11: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(mob->conjugate(verbbuf.buffer())); data/powder-118+dfsg1/creature.cpp:5784:11: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(item->conjugate(verbbuf.buffer())); data/powder-118+dfsg1/creature.cpp:5875:15: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. basename.sprintf("%s %s", glb_mobdefs[myOrigDefinition].name, glb_mobdefs[myDefinition].name); data/powder-118+dfsg1/creature.cpp:5936:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s the %s", data/powder-118+dfsg1/creature.cpp:5960:13: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("the %s", basename.buffer()); data/powder-118+dfsg1/creature.cpp:5964:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s%s", gram_getarticle(basename), basename.buffer()); data/powder-118+dfsg1/creature.cpp:6043:7: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("Sounds like %s. ", data/powder-118+dfsg1/creature.cpp:6048:7: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("Thinks like %s. ", data/powder-118+dfsg1/creature.cpp:6052:7: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("It feels like %s. ", data/powder-118+dfsg1/creature.cpp:6057:7: [4] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. buf.sprintf("Seems suspicious.... "); data/powder-118+dfsg1/creature.cpp:6300:7: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("- %s %s %s.", data/powder-118+dfsg1/creature.cpp:6332:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("POWDER %03d", hiscore_getversion()); data/powder-118+dfsg1/creature.cpp:6364:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("You have save scummed %d times.", data/powder-118+dfsg1/creature.cpp:6375:6: [4] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. buf.sprintf("Wizard mode is activated."); data/powder-118+dfsg1/creature.cpp:6390:9: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("Physical: %d/%d (max %d)", data/powder-118+dfsg1/creature.cpp:6394:9: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("Mental: %d/%d (max %d)", data/powder-118+dfsg1/creature.cpp:6398:9: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("AC: %d", getAC()); data/powder-118+dfsg1/creature.cpp:6401:9: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("X: %d", getExp()); data/powder-118+dfsg1/creature.cpp:6409:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("Depth: %d", glbCurLevel->getDepth()); data/powder-118+dfsg1/creature.cpp:6411:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("Depth: %d", getDLevel()); data/powder-118+dfsg1/creature.cpp:6414:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%d moves over ", speed_gettime()); data/powder-118+dfsg1/creature.cpp:6424:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("Score: %d", calcScore(didwin)); data/powder-118+dfsg1/creature.cpp:6532:7: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("- %s %s %s.", data/powder-118+dfsg1/creature.cpp:6582:6: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). buf.strcpy("- "); data/powder-118+dfsg1/creature.cpp:6583:6: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(item->getName(false, false, true)); data/powder-118+dfsg1/creature.cpp:6584:6: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat("."); data/powder-118+dfsg1/creature.cpp:6604:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s.txt", glbAvatarName); data/powder-118+dfsg1/creature.cpp:7514:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%%IU <I:fall> off %%r %s.", slotname); data/powder-118+dfsg1/creature.cpp:8489:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("You already know %s.", data/powder-118+dfsg1/creature.cpp:8518:7: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("You must first learn %s.", data/powder-118+dfsg1/creature.cpp:8601:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("You already know %s.", data/powder-118+dfsg1/creature.cpp:8631:7: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("You must first learn %s.", data/powder-118+dfsg1/creature.cpp:9504:8: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s fireball explodes!", data/powder-118+dfsg1/creature.cpp:9524:8: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s lightning forks!", data/powder-118+dfsg1/creature.cpp:9601:7: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("The force bolt shatters the %s.", data/powder-118+dfsg1/creature.cpp:9623:7: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("The force bolt shatters the %s.", data/powder-118+dfsg1/encyc_support.cpp:116:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("Magic Cost: %d", glb_spelldefs[spell].mpcost); data/powder-118+dfsg1/encyc_support.cpp:122:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("Health Cost: %d", glb_spelldefs[spell].hpcost); data/powder-118+dfsg1/encyc_support.cpp:128:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("EXP Cost: %d", glb_spelldefs[spell].xpcost); data/powder-118+dfsg1/encyc_support.cpp:132:9: [4] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. buf.sprintf("Circle: "); data/powder-118+dfsg1/encyc_support.cpp:133:9: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(gram_capitalize(glb_spelltypedefs[glb_spelldefs[spell].type].name)); data/powder-118+dfsg1/gfxengine.cpp:946:9: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%d, %d, %d, %d...%d, %d, %d, %d...", data/powder-118+dfsg1/gfxengine.cpp:1835:9: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%d tiles used", glb_tilestashsize); data/powder-118+dfsg1/gfxengine.cpp:2048:7: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%2d", item->getStackCount()); data/powder-118+dfsg1/gfxengine.cpp:2928:3: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). strcpy(prefix, &origdst[wordstart+1]); data/powder-118+dfsg1/gfxengine.cpp:3090:8: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). body.strcat(glb_pager[i]); data/powder-118+dfsg1/gfxengine.cpp:3091:8: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). body.strcat("\n\r"); data/powder-118+dfsg1/grammar.cpp:174:9: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). buf.strcpy(phrase); data/powder-118+dfsg1/grammar.cpp:219:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s%s%sice%s%s", data/powder-118+dfsg1/grammar.cpp:227:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s%s%sren%s%s", data/powder-118+dfsg1/grammar.cpp:236:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s%s%smen%s%s", data/powder-118+dfsg1/grammar.cpp:246:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s%s%sves%s%s", data/powder-118+dfsg1/grammar.cpp:255:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s%s%sves%s%s", data/powder-118+dfsg1/grammar.cpp:263:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s%s%sen%s%s", data/powder-118+dfsg1/grammar.cpp:276:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s%s%ses%s%s", data/powder-118+dfsg1/grammar.cpp:286:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s%s%ss%s%s", data/powder-118+dfsg1/grammar.cpp:295:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s%s%sies%s%s", data/powder-118+dfsg1/grammar.cpp:304:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s%s%ss%s%s", data/powder-118+dfsg1/grammar.cpp:500:9: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). buf.strcpy(basename); data/powder-118+dfsg1/grammar.cpp:515:9: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. result.sprintf("no %s", plural.buffer()); data/powder-118+dfsg1/grammar.cpp:521:13: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). result.strcpy(gram_getarticle(basename)); data/powder-118+dfsg1/grammar.cpp:522:13: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). result.strcat(basename); data/powder-118+dfsg1/grammar.cpp:531:9: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. result.sprintf("%d %s", count, plural.buffer()); data/powder-118+dfsg1/grammar.cpp:576:9: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%d%s", place, ext); data/powder-118+dfsg1/grammar.cpp:651:6: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(space); data/powder-118+dfsg1/grammar.cpp:696:6: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). buf.strcpy(verb); data/powder-118+dfsg1/grammar.cpp:704:7: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). buf.strcpy(verb); data/powder-118+dfsg1/grammar.cpp:732:11: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%ses", verb); data/powder-118+dfsg1/grammar.cpp:739:8: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%ss", verb); data/powder-118+dfsg1/grammar.cpp:744:8: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(verb); data/powder-118+dfsg1/grammar.cpp:748:8: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat("ies"); data/powder-118+dfsg1/grammar.cpp:753:11: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%ss", verb); data/powder-118+dfsg1/grammar.cpp:761:7: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s", verb); data/powder-118+dfsg1/grammar.cpp:766:7: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s", verb); data/powder-118+dfsg1/grammar.cpp:773:7: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s", verb); data/powder-118+dfsg1/grammar.cpp:778:7: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). buf.strcpy(verb); data/powder-118+dfsg1/grammar.cpp:793:12: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). srcbuf.strcpy(str); data/powder-118+dfsg1/grammar.cpp:852:12: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). strbuf.strcpy(str); data/powder-118+dfsg1/grammar.cpp:885:9: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). result.strcat("'"); data/powder-118+dfsg1/grammar.cpp:887:9: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). result.strcat("'s"); data/powder-118+dfsg1/hiscore.cpp:175:5: [4] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. sprintf(line1, "%c%s%c%03d/%02d%c%03d/%02d %c%02d/%02d", data/powder-118+dfsg1/hiscore.cpp:191:5: [4] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. sprintf(line2, " %s $%d t:%d v%03d", state, entry->score, entry->turns, entry->version); data/powder-118+dfsg1/hiscore.cpp:370:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("You came in %s place! ", placename.buffer()); data/powder-118+dfsg1/input.cpp:340:2: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). strcpy(glbInputData.myText, initialtext); data/powder-118+dfsg1/item.cpp:1721:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s%s %s", data/powder-118+dfsg1/item.cpp:1781:14: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). nonarticle.strcat("evil "); data/powder-118+dfsg1/item.cpp:1783:14: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). nonarticle.strcat("holy "); data/powder-118+dfsg1/item.cpp:1788:17: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). nonarticle.strcat("poisoned "); data/powder-118+dfsg1/item.cpp:1801:7: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. tmp.sprintf("%+d ", getEnchantment()); data/powder-118+dfsg1/item.cpp:1802:14: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). nonarticle.strcat(tmp); data/powder-118+dfsg1/item.cpp:1806:13: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). nonarticle.strcat(rawname); data/powder-118+dfsg1/item.cpp:1810:10: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). buf.strcpy("the "); data/powder-118+dfsg1/item.cpp:1811:10: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(nonarticle); data/powder-118+dfsg1/item.cpp:1828:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. tmp.sprintf(" (%d)", myCharges); data/powder-118+dfsg1/item.cpp:1829:10: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(tmp); data/powder-118+dfsg1/item.cpp:1837:7: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(" "); data/powder-118+dfsg1/item.cpp:1839:7: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(" called "); data/powder-118+dfsg1/item.cpp:1840:10: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(myName.getName()); data/powder-118+dfsg1/item.cpp:1844:10: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(" named "); data/powder-118+dfsg1/item.cpp:1845:10: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(glb_itemnames[myDefinition]); data/powder-118+dfsg1/item.cpp:1913:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s:", basename); data/powder-118+dfsg1/item.cpp:1916:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf(" %s", idname); data/powder-118+dfsg1/item.cpp:1945:9: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). buf.strcpy(""); data/powder-118+dfsg1/item.cpp:1957:11: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. section.sprintf("%d", data/powder-118+dfsg1/item.cpp:1960:7: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(section); data/powder-118+dfsg1/item.cpp:1964:11: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. section.sprintf("%d", data/powder-118+dfsg1/item.cpp:1966:7: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(section); data/powder-118+dfsg1/item.cpp:1967:11: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. section.sprintf("d%d", data/powder-118+dfsg1/item.cpp:1969:7: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(section); data/powder-118+dfsg1/item.cpp:1974:14: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. section.sprintf("%+d", data/powder-118+dfsg1/item.cpp:1976:10: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(section); data/powder-118+dfsg1/item.cpp:1980:14: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. section.sprintf("[%+d]", attack->bonustohit); data/powder-118+dfsg1/item.cpp:1981:10: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(section); data/powder-118+dfsg1/item.cpp:1983:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. section.sprintf(" (%s)", glb_elementdefs[attack->element].name); data/powder-118+dfsg1/item.cpp:1984:6: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(section); data/powder-118+dfsg1/item.cpp:1988:10: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(", {"); data/powder-118+dfsg1/item.cpp:1991:10: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(section); data/powder-118+dfsg1/item.cpp:1993:10: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat("}"); data/powder-118+dfsg1/item.cpp:1998:10: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(", "); data/powder-118+dfsg1/item.cpp:2064:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("light radius %d", getLightRadius()); data/powder-118+dfsg1/item.cpp:2079:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("armour %d", getAC()); data/powder-118+dfsg1/item.cpp:2106:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%d: ", attack->range); data/powder-118+dfsg1/item.cpp:2122:9: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). buf.strcpy("Size: "); data/powder-118+dfsg1/item.cpp:2123:9: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(gram_capitalize(glb_sizedefs[getSize()].name)); data/powder-118+dfsg1/item.cpp:2127:9: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). buf.strcpy("Material: "); data/powder-118+dfsg1/item.cpp:2128:9: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(gram_capitalize(glb_materialdefs[getMaterial()].name)); data/powder-118+dfsg1/item.cpp:2132:9: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("Weight: %d", data/powder-118+dfsg1/item.cpp:2158:9: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("Noise: %s", noisetext); data/powder-118+dfsg1/item.cpp:2163:9: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). buf.strcpy(glb_skilldefs[getAttackSkill()].name); data/powder-118+dfsg1/item.cpp:3200:11: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("A thick slime coats %s.", data/powder-118+dfsg1/item.cpp:3255:11: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("Unknown potion type %d", getMagicClass()); data/powder-118+dfsg1/item.cpp:3835:12: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s fades into the ground.", data/powder-118+dfsg1/main.cpp:1158:7: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. text.sprintf( data/powder-118+dfsg1/main.cpp:1167:7: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. text.sprintf( data/powder-118+dfsg1/main.cpp:1183:7: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. text.sprintf( data/powder-118+dfsg1/main.cpp:1224:11: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). text.strcat(glb_hungerdefs[hunger].name); data/powder-118+dfsg1/main.cpp:1225:11: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). text.strcat(" "); data/powder-118+dfsg1/main.cpp:1229:11: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). text.strcat("Hardening "); data/powder-118+dfsg1/main.cpp:1231:11: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). text.strcat("Aflame "); data/powder-118+dfsg1/main.cpp:1233:11: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). text.strcat("Strangled "); data/powder-118+dfsg1/main.cpp:1235:11: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). text.strcat("Paralysed "); data/powder-118+dfsg1/main.cpp:1237:11: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). text.strcat("Asleep "); data/powder-118+dfsg1/main.cpp:1239:11: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). text.strcat("Confused "); data/powder-118+dfsg1/main.cpp:1241:11: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). text.strcat("Deadly Poisoned "); data/powder-118+dfsg1/main.cpp:1243:11: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). text.strcat("Harshly Poisoned "); data/powder-118+dfsg1/main.cpp:1245:11: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). text.strcat("Strongly Poisoned "); data/powder-118+dfsg1/main.cpp:1247:11: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). text.strcat("Poisoned "); data/powder-118+dfsg1/main.cpp:1249:11: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). text.strcat("Mildly Poisoned "); data/powder-118+dfsg1/main.cpp:1251:11: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). text.strcat("Bleeding "); data/powder-118+dfsg1/main.cpp:1253:11: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). text.strcat("Blind "); data/powder-118+dfsg1/main.cpp:1255:11: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). text.strcat("Deaf "); data/powder-118+dfsg1/main.cpp:1257:11: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). text.strcat("Tired "); data/powder-118+dfsg1/main.cpp:1265:8: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). text.strcat("Submerged "); data/powder-118+dfsg1/main.cpp:1267:8: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). text.strcat("Buried "); data/powder-118+dfsg1/main.cpp:1270:11: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). text.strcat("In Pit "); data/powder-118+dfsg1/main.cpp:1272:11: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). text.strcat("In Tree "); data/powder-118+dfsg1/main.cpp:1274:11: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). text.strcat("Slow "); data/powder-118+dfsg1/main.cpp:1276:11: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). text.strcat("Amnesic "); data/powder-118+dfsg1/main.cpp:1278:11: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). text.strcat("Off Balance "); data/powder-118+dfsg1/main.cpp:1282:8: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). text.strcat("Searching "); data/powder-118+dfsg1/main.cpp:1284:8: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). text.strcat("Searched "); data/powder-118+dfsg1/main.cpp:1965:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. welcome.sprintf("You are a %s %s.", data/powder-118+dfsg1/main.cpp:2039:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("You have save scummed %d times. ", data/powder-118+dfsg1/main.cpp:2573:7: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). buf.strcpy("eat "); data/powder-118+dfsg1/main.cpp:2574:7: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(stack(j)->getName()); data/powder-118+dfsg1/main.cpp:3872:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s cries: I still have a chance! " data/powder-118+dfsg1/main.cpp:3917:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%d mobs, %d tables, %d buffers", data/powder-118+dfsg1/main.cpp:3923:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%d items, %d mobs, %d maps.", data/powder-118+dfsg1/main.cpp:3930:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%d Mob Types", NUM_MOBS); data/powder-118+dfsg1/main.cpp:3932:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%d Item Types", NUM_ITEMS); data/powder-118+dfsg1/main.cpp:3934:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%d Wand Types", NUM_WANDS); data/powder-118+dfsg1/main.cpp:3936:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%d Book Types", NUM_SPELLBOOKS); data/powder-118+dfsg1/main.cpp:3938:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%d Amulet Types", NUM_AMULETS); data/powder-118+dfsg1/main.cpp:3940:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%d Helms Types", NUM_HELMS); data/powder-118+dfsg1/main.cpp:3942:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%d Ring Types", NUM_RINGS); data/powder-118+dfsg1/main.cpp:3944:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%d Scroll Types", NUM_SCROLLS); data/powder-118+dfsg1/main.cpp:3946:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%d Potion Types", NUM_POTIONS); data/powder-118+dfsg1/main.cpp:3948:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%d Attack Types", NUM_ATTACKS); data/powder-118+dfsg1/main.cpp:3950:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%d Element Types", NUM_ELEMENTS); data/powder-118+dfsg1/main.cpp:3952:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%d Spells", NUM_SPELLS); data/powder-118+dfsg1/main.cpp:3954:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%d Skills", NUM_SKILLS); data/powder-118+dfsg1/main.cpp:3956:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%d Intrinsics", NUM_INTRINSICS); data/powder-118+dfsg1/main.cpp:3958:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%d Actions", NUM_ACTIONS); data/powder-118+dfsg1/main.cpp:3960:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%d Sprites", NUM_SPRITES); data/powder-118+dfsg1/main.cpp:3962:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%d Tiles", NUM_TILES); data/powder-118+dfsg1/main.cpp:3964:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%d Paperdoll Tiles", NUM_MINIS); data/powder-118+dfsg1/main.cpp:4465:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("Bind %s to? ", glb_actiondefs[action].name); data/powder-118+dfsg1/main.cpp:5010:20: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. forgetprompt.sprintf("Forget %s?", glb_skilldefs[skill].name); data/powder-118+dfsg1/main.cpp:5012:20: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. forgetprompt.sprintf("Forget %s?", glb_spelldefs[spell].name); data/powder-118+dfsg1/main.cpp:5191:4: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). strcpy(glbAvatarName, buf); data/powder-118+dfsg1/main.cpp:5329:8: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s kill!", petname.buffer()); data/powder-118+dfsg1/main.cpp:5336:8: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s guard me!", petname.buffer()); data/powder-118+dfsg1/main.cpp:5343:8: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s stay!", petname.buffer()); data/powder-118+dfsg1/main.cpp:5377:4: [4] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. sprintf(mi, "%s (!)", m[j]); data/powder-118+dfsg1/main.cpp:5505:7: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("You need %d magic points!", data/powder-118+dfsg1/main.cpp:5514:7: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("You need %d health points!", data/powder-118+dfsg1/main.cpp:5523:7: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("You need %d free experience points!", data/powder-118+dfsg1/map.cpp:343:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("Found end at %d. ", iterations); data/powder-118+dfsg1/map.cpp:2728:6: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(mob->getDescription()); data/powder-118+dfsg1/map.cpp:2737:10: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat("You feel yourself"); data/powder-118+dfsg1/map.cpp:2739:10: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat("You see yourself"); data/powder-118+dfsg1/map.cpp:2768:7: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat("You recall "); data/powder-118+dfsg1/map.cpp:2772:7: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat("You feel "); data/powder-118+dfsg1/map.cpp:2776:7: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat("You see "); data/powder-118+dfsg1/map.cpp:2781:10: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(", "); data/powder-118+dfsg1/map.cpp:2787:10: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat("many items"); data/powder-118+dfsg1/map.cpp:2790:6: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(stack(i)->getName()); data/powder-118+dfsg1/map.cpp:2801:7: [4] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. buf.sprintf("You know nothing of this spot. "); data/powder-118+dfsg1/map.cpp:2807:7: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(here); data/powder-118+dfsg1/map.cpp:2810:7: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(". "); data/powder-118+dfsg1/map.cpp:2834:6: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(prefix); data/powder-118+dfsg1/map.cpp:2835:6: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(glb_smokedefs[smoke].name); data/powder-118+dfsg1/map.cpp:2843:6: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(prefix); data/powder-118+dfsg1/map.cpp:2844:6: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(glb_squaredefs[tile].description); data/powder-118+dfsg1/map.cpp:2851:10: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(here); data/powder-118+dfsg1/map.cpp:2853:10: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). buf.strcat(". "); data/powder-118+dfsg1/map.cpp:4362:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s floods %s, leaving it unchanged.", liquid, desc); data/powder-118+dfsg1/map.cpp:4369:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s floods %s.", liquid, desc); data/powder-118+dfsg1/mobref.cpp:249:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("new id: %d. ", newid); data/powder-118+dfsg1/mobref.cpp:261:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("new free: %d. ", glb_freelist); data/powder-118+dfsg1/msg.cpp:266:3: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). strcpy(prefix, &origdst[wordstart+1]); data/powder-118+dfsg1/msg.cpp:406:9: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s%c", msg, SYMBOL_NEXT); data/powder-118+dfsg1/msg.cpp:531:6: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). strcpy(glbStashedMsg[glbStashHead][i], glbMsg[i]); data/powder-118+dfsg1/msg.cpp:643:2: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). strcpy(glbMsg[i], glbStashedMsg[glbStashView][i]); data/powder-118+dfsg1/piety.cpp:494:9: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s: %d:%d. ", data/powder-118+dfsg1/piety.cpp:528:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s: %s ", glb_goddefs[god].name, data/powder-118+dfsg1/piety.cpp:559:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf(abusemsg[rand_choice(3)], data/powder-118+dfsg1/piety.cpp:574:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf(godsavemsg[rand_choice(3)], data/powder-118+dfsg1/piety.cpp:640:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s: Prove your worth! ", data/powder-118+dfsg1/piety.cpp:681:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s: To the pits with you! ", data/powder-118+dfsg1/piety.cpp:692:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s: A pox on you! ", data/powder-118+dfsg1/piety.cpp:703:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s: You are an inferior tool! ", data/powder-118+dfsg1/piety.cpp:714:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s: You deserve no protection! ", data/powder-118+dfsg1/piety.cpp:725:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s: Drink the poison you have brewed! ", data/powder-118+dfsg1/piety.cpp:736:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s: Freeze with Fright at my Wrath! ", data/powder-118+dfsg1/piety.cpp:746:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s: Dream in Terror! ", data/powder-118+dfsg1/piety.cpp:771:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s: Learn Humility! ", data/powder-118+dfsg1/piety.cpp:782:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s: Your Magic Will Not Avail You! ", data/powder-118+dfsg1/piety.cpp:801:7: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s: I have caught you empty handed! Ha! ", data/powder-118+dfsg1/piety.cpp:808:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s: Your over use of %s bores me! ", data/powder-118+dfsg1/piety.cpp:871:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s wails in confusion. ", data/powder-118+dfsg1/piety.cpp:1035:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s: Allow me to aid you. ", data/powder-118+dfsg1/piety.cpp:1042:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s: Your flesh shall mend! ", data/powder-118+dfsg1/piety.cpp:1050:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s: Show your devotion! ", data/powder-118+dfsg1/piety.cpp:1058:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s: You've proven your worth!", data/powder-118+dfsg1/piety.cpp:1080:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s: Your affliction pains me! ", data/powder-118+dfsg1/piety.cpp:1088:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s: I wish no more statues. ", data/powder-118+dfsg1/piety.cpp:1098:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s: Your water is blessed! ", data/powder-118+dfsg1/piety.cpp:1120:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s: You are my weapon: Cut Deeply! ", data/powder-118+dfsg1/piety.cpp:1130:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s: Accept my protection. ", data/powder-118+dfsg1/piety.cpp:1140:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s: Knowledge is Power! ", data/powder-118+dfsg1/piety.cpp:1177:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s: Use my gift wisely. ", data/powder-118+dfsg1/piety.cpp:1209:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s: Know Your Tools! ", data/powder-118+dfsg1/piety.cpp:1285:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s: Suffer my Wrath! ", data/powder-118+dfsg1/piety.cpp:1350:12: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. curgod.sprintf("You currently worship %s. ", glb_goddefs[glbChosenGod].name); data/powder-118+dfsg1/piety.cpp:1378:6: [4] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. sprintf(menu[i+1], "%-11s (%d)", data/powder-118+dfsg1/piety.cpp:1416:16: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. godchoice.sprintf("Follow %s?", glb_goddefs[god].name); data/powder-118+dfsg1/piety.cpp:1553:9: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("You have %d free spell and %d free skill slots.", data/powder-118+dfsg1/piety.cpp:1577:2: [4] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. sprintf(menu[god], "%10s: %d (%d)", data/powder-118+dfsg1/piety.cpp:1595:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("Now Worshipping: %s", glb_goddefs[glbChosenGod].name); data/powder-118+dfsg1/port/ds/hamfake.cpp:728:5: [4] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. sprintf(buf, "%s%s", glbAbsoluteDataPath, path); data/powder-118+dfsg1/port/psp/hamfake.h:27:9: [4] (format) printf: If format strings can be influenced by an attacker, they can be exploited (CWE-134). Use a constant for the format specification. #define printf pspDebugScreenPrintf data/powder-118+dfsg1/port/psp/pspmain.cpp:19:9: [4] (format) printf: If format strings can be influenced by an attacker, they can be exploited (CWE-134). Use a constant for the format specification. #define printf pspDebugScreenPrintf data/powder-118+dfsg1/port/sdl/hamfake.cpp:1756:6: [4] (format) fprintf: If format strings can be influenced by an attacker, they can be exploited (CWE-134). Use a constant for the format specification. fprintf(stderr, TRANSACTIONNAME " is corrupt: %d, ignoring it.\r\n", transactionsize); data/powder-118+dfsg1/port/sdl/hamfake.cpp:1770:3: [4] (format) fprintf: If format strings can be influenced by an attacker, they can be exploited (CWE-134). Use a constant for the format specification. fprintf(stderr, SAVENAME " is corrupt: %d, but still reading it.\r\n", savesize); data/powder-118+dfsg1/port/sdl/hamfake.cpp:2144:13: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. fulldst.sprintf("\\My Documents\\POWDER\\%s", dst); data/powder-118+dfsg1/port/sdl/hamfake.cpp:2145:13: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. fullsrc.sprintf("\\My Documents\\POWDER\\%s", src); data/powder-118+dfsg1/port/sdl/hamfake.cpp:2150:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. fullsrc.sprintf("%s/%s", glbOurDataPath, src); data/powder-118+dfsg1/port/sdl/hamfake.cpp:2151:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. fulldst.sprintf("%s/%s", glbOurDataPath, dst); data/powder-118+dfsg1/port/sdl/hamfake.cpp:2156:13: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). fullsrc.strcpy(src); data/powder-118+dfsg1/port/sdl/hamfake.cpp:2157:13: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). fulldst.strcpy(dst); data/powder-118+dfsg1/port/sdl/hamfake.cpp:2174:14: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. fullpath.sprintf("\\My Documents\\POWDER\\%s", path); data/powder-118+dfsg1/port/sdl/hamfake.cpp:2185:11: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. fullpath.sprintf("%s/%s", glbOurDataPath, path); data/powder-118+dfsg1/sramstream.cpp:238:9: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("Completed save of %d bytes, %d blocks.", data/powder-118+dfsg1/sramstream.cpp:328:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("Z:%d,B:%d,S:%d,I:%d", data/powder-118+dfsg1/support/bmp2c/bmp2c.cpp:175:5: [4] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. sprintf(outputname, "%s.c", argv[1]); data/powder-118+dfsg1/support/bmp2c/bmp2c.cpp:185:5: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). strcpy(varname, argv[1]); data/powder-118+dfsg1/support/compendium/compendium.cpp:324:11: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. fname.sprintf("%s.txt", rawname); data/powder-118+dfsg1/support/compendium/compendium.cpp:326:13: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. bmpname.sprintf("%s.bmp", rawname); data/powder-118+dfsg1/support/compendium/compendium.cpp:328:13: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. imgname.sprintf("%s", rawname); data/powder-118+dfsg1/support/compendium/compendium.cpp:339:10: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). name.strcpy(rawname); data/powder-118+dfsg1/support/encyclopedia2c/encyclopedia2c.cpp:154:2: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). strcpy(newlast, myLastLine); data/powder-118+dfsg1/support/encyclopedia2c/encyclopedia2c.cpp:168:2: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). strcat(newlast, text); data/powder-118+dfsg1/support/encyclopedia2c/encyclopedia2c.cpp:175:2: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). strcpy(myLastLine, text); data/powder-118+dfsg1/support/encyclopedia2c/encyclopedia2c.cpp:444:5: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). strcpy(headername, argv[1]); data/powder-118+dfsg1/support/encyclopedia2c/encyclopedia2c.cpp:445:5: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). strcpy(cppname, argv[1]); data/powder-118+dfsg1/support/encyclopedia2c/encyclopedia2c.cpp:537:2: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). strcpy(bookname, line); data/powder-118+dfsg1/support/encyclopedia2c/encyclopedia2c.cpp:560:2: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). strcpy(keyname, bookname); data/powder-118+dfsg1/support/encyclopedia2c/encyclopedia2c.cpp:562:2: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). strcat(keyname, readhead); data/powder-118+dfsg1/support/encyclopedia2c/encyclopedia2c.cpp:577:2: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). strcpy(entryname, readhead+2); data/powder-118+dfsg1/support/enummaker/enummaker.cpp:611:2: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). strcat(output, tmp); data/powder-118+dfsg1/support/enummaker/enummaker.cpp:785:7: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). strcpy(total, item->myValue); data/powder-118+dfsg1/support/enummaker/enummaker.cpp:787:7: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). strcat(total, varvalue); data/powder-118+dfsg1/support/map2c/map2c.cpp:112:2: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). strcpy(glbMap[glbHeight], &line[1]); data/powder-118+dfsg1/support/tile2c/bmp.cpp:22:17: [4] (format) printf: If format strings can be influenced by an attacker, they can be exploited (CWE-134). Use a constant for the format specification. #define iprintf printf data/powder-118+dfsg1/support/tile2c/bmp.cpp:356:2: [4] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. sprintf(buf, "%s.bmp", aname[anum]); data/powder-118+dfsg1/support/tile2c/bmp.cpp:588:2: [4] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. sprintf(buf, "%s_8.c", aname[anum]); data/powder-118+dfsg1/support/tile2c/bmp.cpp:589:2: [4] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. sprintf(buf2, "%s_Tiles", aname[anum]); data/powder-118+dfsg1/victory.cpp:79:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%d year%s, %d day%s, %d hour%s, %d minute%s and %d second%s", data/powder-118+dfsg1/victory.cpp:90:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%d day%s and %dh%dm%ds", data/powder-118+dfsg1/victory.cpp:100:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%dh%dm%ds", data/powder-118+dfsg1/victory.cpp:109:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%d minute%s and %d second%s", data/powder-118+dfsg1/victory.cpp:117:6: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%d second%s", data/powder-118+dfsg1/victory.cpp:132:9: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s intrinsics are:", mob->getPossessive()); data/powder-118+dfsg1/victory.cpp:252:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%d,%03dk", (totalkill / 1000000), data/powder-118+dfsg1/victory.cpp:257:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%d,%03d", (totalkill / 1000), (totalkill % 1000)); data/powder-118+dfsg1/victory.cpp:260:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%d", totalkill); data/powder-118+dfsg1/victory.cpp:387:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("Baezl'bub has been vanquished by the %s " data/powder-118+dfsg1/victory.cpp:400:7: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("Baezl'bub has fallen to %s! ", name.buffer()); data/powder-118+dfsg1/victory.cpp:407:11: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("Baezl'bub's cruel reign of terror has ended, felled by %s! ", name.buffer()); data/powder-118+dfsg1/victory.cpp:410:11: [4] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. buf.sprintf("While many stories have spread about how Baezl'bub died, his death is one fact none can doubt! "); data/powder-118+dfsg1/victory.cpp:415:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("All of the surface know who to thank - the %s known as %s! ", prof, glbAvatarName); data/powder-118+dfsg1/victory.cpp:427:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s. ", attack->deathtext); data/powder-118+dfsg1/victory.cpp:436:7: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("You committed suicide with the aid of %s. ", data/powder-118+dfsg1/victory.cpp:440:7: [4] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. buf.sprintf("You committed suicide. "); data/powder-118+dfsg1/victory.cpp:450:11: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("%s was struck down at a young age. ", data/powder-118+dfsg1/victory.cpp:454:11: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("The %s %s became another statistic. ", data/powder-118+dfsg1/victory.cpp:472:7: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf(formattxt, data/powder-118+dfsg1/victory.cpp:485:7: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf(formattxt, data/powder-118+dfsg1/victory.cpp:492:7: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf(formattxt, data/powder-118+dfsg1/victory.cpp:503:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("Men cry and women wail as word reaches the surface of the death of the %s %s! ", data/powder-118+dfsg1/victory.cpp:513:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("So much hope crushed by that most vile of %s, %s. ", data/powder-118+dfsg1/victory.cpp:564:7: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("The %s %s death at the hands of %s%s%s will " data/powder-118+dfsg1/victory.cpp:578:7: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("Why did %s think life was not worth living? " data/powder-118+dfsg1/victory.cpp:586:7: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("The %s %s death is used to this day to remind " data/powder-118+dfsg1/victory.cpp:594:7: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("The %s %s reputation is sullied by an ignoble death. ", data/powder-118+dfsg1/victory.cpp:777:9: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("You took %d moves. ", speed_gettime()); data/powder-118+dfsg1/victory.cpp:790:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("You took %s. That is outright insanity. ", data/powder-118+dfsg1/victory.cpp:795:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("You took %s. Impressive dedication! ", data/powder-118+dfsg1/victory.cpp:801:7: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("It took you %s to defeat Baezl'bub. ", data/powder-118+dfsg1/victory.cpp:804:7: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("You spent %s. And you still didn't win. ", data/powder-118+dfsg1/victory.cpp:809:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("You spent %s. %s", data/powder-118+dfsg1/victory.cpp:817:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. buf.sprintf("That was quick - %s. ", data/powder-118+dfsg1/port/sdl/hamfake.cpp:1617:9: [3] (buffer) getenv: Environment variables are untrustable input if they can be set by an attacker. They can have any content and length, and the same variable can be set more than once (CWE-807, CWE-20). Check environment variables carefully before using them. home = getenv("HOME"); data/powder-118+dfsg1/thread.cpp:99:7: [3] (misc) InitializeCriticalSection: Exceptions can be thrown in low-memory situations. Use InitializeCriticalSectionAndSpinCount instead. ::InitializeCriticalSection(myLock); data/powder-118+dfsg1/thread.cpp:130:7: [3] (misc) EnterCriticalSection: On some versions of Windows, exceptions can be thrown in low-memory situations. Use InitializeCriticalSectionAndSpinCount instead. ::EnterCriticalSection(myLock); data/powder-118+dfsg1/thread_win.cpp:19:5: [3] (misc) InitializeCriticalSection: Exceptions can be thrown in low-memory situations. Use InitializeCriticalSectionAndSpinCount instead. InitializeCriticalSection(&myCritSec); data/powder-118+dfsg1/thread_win.cpp:60:5: [3] (misc) EnterCriticalSection: On some versions of Windows, exceptions can be thrown in low-memory situations. Use InitializeCriticalSectionAndSpinCount instead. EnterCriticalSection(&myCritSec); data/powder-118+dfsg1/thread_win.cpp:69:5: [3] (misc) EnterCriticalSection: On some versions of Windows, exceptions can be thrown in low-memory situations. Use InitializeCriticalSectionAndSpinCount instead. EnterCriticalSection(&myCritSec); data/powder-118+dfsg1/action.cpp:3603:17: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. options = new char *[num_options+2]; data/powder-118+dfsg1/action.cpp:5782:7: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(&attack, &glb_attackdefs[ATTACK_FLAMESTRIKE], sizeof(ATTACK_DEF)); data/powder-118+dfsg1/action.cpp:6255:12: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. const char *direction[9] = data/powder-118+dfsg1/action.cpp:7567:12: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. const char *moblist[NUM_MOBS+2]; // room for null, nochange data/powder-118+dfsg1/artifact.cpp:36:5: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(&attack, &glb_attackdefs[ATTACK_MISUSED], sizeof(ATTACK_DEF)); data/powder-118+dfsg1/artifact.cpp:37:5: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(&thrownattack, &glb_attackdefs[ATTACK_MISTHROWN], sizeof(ATTACK_DEF)); data/powder-118+dfsg1/artifact.cpp:305:5: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char intbuf[100]; data/powder-118+dfsg1/bmp.cpp:32:5: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char id[2]; data/powder-118+dfsg1/bmp.cpp:347:6: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(cd_to_pal, other, (1<<15) * sizeof(s16)); data/powder-118+dfsg1/bmp.cpp:366:11: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. const char *aname[NUM_ALPHA] = data/powder-118+dfsg1/buf.cpp:283:5: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char s[2]; data/powder-118+dfsg1/creature.cpp:6433:5: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char dash[3] = { '-', ' ', 0 }; data/powder-118+dfsg1/gfx/all_bitmaps.cpp:30:7: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. const char *glb_fontnames[NUM_FONTS] = data/powder-118+dfsg1/gfx/all_bitmaps.h:35:20: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. const unsigned char *alphabet[NUM_FONTS]; data/powder-118+dfsg1/gfx/all_bitmaps.h:50:14: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. extern const char *glb_fontnames[NUM_FONTS]; data/powder-118+dfsg1/gfxengine.cpp:164:1: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char glb_stdcolor[NUM_COLOURS]; data/powder-118+dfsg1/gfxengine.cpp:811:24: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. glb_bg2tiledata = (char *) new u16[WORDPERTILE*TILESTASH]; data/powder-118+dfsg1/gfxengine.cpp:1502:1: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char glb_tilestashdata[TILESTASH][4]; data/powder-118+dfsg1/gfxengine.cpp:1600:22: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. gfx_fillminimapblock(char *dst, char c[4]) data/powder-118+dfsg1/gfxengine.cpp:1600:33: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. gfx_fillminimapblock(char *dst, char c[4]) data/powder-118+dfsg1/gfxengine.cpp:1621:22: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. gfx_fillminimapblock(char *dst, char c[4]) data/powder-118+dfsg1/gfxengine.cpp:1621:33: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. gfx_fillminimapblock(char *dst, char c[4]) data/powder-118+dfsg1/gfxengine.cpp:1651:27: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. gfx_findminimaptilenumber(char c[4]) data/powder-118+dfsg1/gfxengine.cpp:1727:5: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(glb_tilestashdata[i], c, 4); data/powder-118+dfsg1/gfxengine.cpp:1737:38: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. gfx_drawminimapblock(int bx, int by, char c[4]) data/powder-118+dfsg1/gfxengine.cpp:1753:5: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char c[4]; data/powder-118+dfsg1/gfxengine.cpp:2572:11: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. const char *menu[4] = data/powder-118+dfsg1/gfxengine.cpp:3000:17: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. newpager = new char *[glb_pager_size + 32]; data/powder-118+dfsg1/gfxengine.cpp:3003:6: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(newpager, glb_pager, sizeof(char *) * glb_pager_size); data/powder-118+dfsg1/gfxengine.cpp:3927:24: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. glb_bg2tiledata = (char *) new u16[WORDPERTILE*TILESTASH]; data/powder-118+dfsg1/grammar.cpp:195:5: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char ending[10]; data/powder-118+dfsg1/grammar.cpp:337:5: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char ending[10]; data/powder-118+dfsg1/grammar.cpp:582:7: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. const char *glb_verbBE[2][NUM_VERBS] = data/powder-118+dfsg1/grammar.cpp:586:7: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. const char *glb_pronoun[NUM_VERBS] = data/powder-118+dfsg1/grammar.cpp:588:7: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. const char *glb_possessive[NUM_VERBS] = data/powder-118+dfsg1/grammar.cpp:590:7: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. const char *glb_ownership[NUM_VERBS] = data/powder-118+dfsg1/grammar.cpp:592:7: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. const char *glb_reflexive[NUM_VERBS] = data/powder-118+dfsg1/grammar.cpp:594:7: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. const char *glb_accusative[NUM_VERBS] = data/powder-118+dfsg1/grammar.cpp:647:2: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(tmp, verb, space - verb); data/powder-118+dfsg1/grammar.cpp:658:5: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char ending[10]; data/powder-118+dfsg1/hiscore.cpp:72:5: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char name[8]; data/powder-118+dfsg1/hiscore.cpp:131:5: [2] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). Risk is low because the source is a constant string. strcpy(entry->name, "No One"); data/powder-118+dfsg1/hiscore.cpp:157:5: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char name[9]; data/powder-118+dfsg1/hiscore.cpp:162:5: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(name, entry->name, 8); data/powder-118+dfsg1/hiscore.cpp:211:5: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char prefix[6]; data/powder-118+dfsg1/hiscore.cpp:313:5: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char line1[100], line2[100]; data/powder-118+dfsg1/hiscore.cpp:430:5: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(newentry.name, glbAvatarName, 8); data/powder-118+dfsg1/hiscore.cpp:469:3: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(&glbScoreList[j], &glbScoreList[j-1], data/powder-118+dfsg1/hiscore.cpp:473:6: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(&glbScoreList[i], &newentry, data/powder-118+dfsg1/input.cpp:65:18: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. static const char charlut[65] = data/powder-118+dfsg1/input.cpp:73:18: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. static const char charlutshift[65] = data/powder-118+dfsg1/input.cpp:115:7: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. const char glbKeyboard[KEYWIDTH * KEYHEIGHT + 1] = data/powder-118+dfsg1/input.cpp:122:7: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. const char glbKeyboardShift[KEYWIDTH * KEYHEIGHT + 1] = data/powder-118+dfsg1/item.cpp:52:1: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char *glb_itemnames[NUM_ITEMS]; data/powder-118+dfsg1/item.cpp:4771:2: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char buf[100]; data/powder-118+dfsg1/itemstack.cpp:49:3: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(newlist, myExtraList, data/powder-118+dfsg1/main.cpp:509:12: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. const char *typelist[NUM_ITEMTYPES+1]; data/powder-118+dfsg1/main.cpp:525:12: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. const char *itemlist[NUM_ITEMS+1]; data/powder-118+dfsg1/main.cpp:580:12: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. const char *typelist[NUM_MAGICTYPES+1]; data/powder-118+dfsg1/main.cpp:609:12: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. const char *itemlist[NUM_ITEMS+1]; data/powder-118+dfsg1/main.cpp:680:12: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. const char *moblist[NUM_MOBS+1]; data/powder-118+dfsg1/main.cpp:720:12: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. const char *spelllist[NUM_SPELLS+1]; data/powder-118+dfsg1/main.cpp:759:12: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. const char *skilllist[NUM_SKILLS+1]; data/powder-118+dfsg1/main.cpp:831:12: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. const char *godlist[NUM_GODS+1]; data/powder-118+dfsg1/main.cpp:853:6: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char buf[50]; data/powder-118+dfsg1/main.cpp:935:12: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. const char *roomlist[NUM_ALLROOMDEFS+1]; data/powder-118+dfsg1/main.cpp:993:12: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. const char *moblist[NUM_MOBS+1]; data/powder-118+dfsg1/main.cpp:1326:24: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. result = new const char *[num+1]; data/powder-118+dfsg1/main.cpp:1665:12: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. const char *textmenu[NUM_MAINMENUS]; data/powder-118+dfsg1/main.cpp:1900:12: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. const char *menu[NUM_GODS+1]; data/powder-118+dfsg1/main.cpp:1992:2: [2] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). Risk is low because the source is a constant string. strcpy(glbAvatarName, "George"); data/powder-118+dfsg1/main.cpp:1999:2: [2] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). Risk is low because the source is a constant string. strcpy(glbAvatarName, "Defiant"); data/powder-118+dfsg1/main.cpp:2558:13: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. list = new char *[stack.entries()*2 + 2 + hasladder]; data/powder-118+dfsg1/main.cpp:3075:7: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char buf[100]; data/powder-118+dfsg1/main.cpp:3461:8: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. const char *helptype[NUM_HELPS]; data/powder-118+dfsg1/main.cpp:3514:9: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. const char *menu[NUM_GODS+1]; data/powder-118+dfsg1/main.cpp:3541:9: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. const char *menu[NUM_SPELLS+1]; data/powder-118+dfsg1/main.cpp:3571:9: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. const char *menu[NUM_SKILLS+1]; data/powder-118+dfsg1/main.cpp:4060:12: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. const char *m[NUM_ACTIONS + 3]; data/powder-118+dfsg1/main.cpp:4089:12: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. const char *m[NUM_SPELLS + 3]; data/powder-118+dfsg1/main.cpp:4364:8: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. const char *tiles[NUM_TILESETS + 2]; data/powder-118+dfsg1/main.cpp:4795:14: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. list = new char *[n+1]; data/powder-118+dfsg1/main.cpp:4860:14: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. list = new char *[n+1]; data/powder-118+dfsg1/main.cpp:4960:26: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. options = new const char *[n+1]; data/powder-118+dfsg1/main.cpp:5174:7: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char buf[50]; data/powder-118+dfsg1/main.cpp:5223:17: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. menu = new char *[pets.entries() + 2]; data/powder-118+dfsg1/main.cpp:5357:12: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. const char *m[NUM_SPELLS + 3]; data/powder-118+dfsg1/main.cpp:6271:10: [2] (misc) fopen: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). fp = fopen("mapstats.csv", "wt"); data/powder-118+dfsg1/map.cpp:322:10: [2] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. Risk is low because the source has a constant maximum length. buf.sprintf(buf, "Same effect at %d. ", iterations); data/powder-118+dfsg1/msg.cpp:49:1: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char *glbMsg[PAGE_SIZE]; data/powder-118+dfsg1/msg.cpp:50:1: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char *glbStashedMsg[NUM_STASHES][PAGE_SIZE]; data/powder-118+dfsg1/msg.cpp:212:5: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char prefix[SCREEN_WIDTH+1]; data/powder-118+dfsg1/name.cpp:45:21: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. glb_names = new char *[glb_numnames]; data/powder-118+dfsg1/name.cpp:72:17: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. newnames = new char *[newsize]; data/powder-118+dfsg1/name.cpp:78:2: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(newnames, glb_names, sizeof(char *) * glb_numnames); data/powder-118+dfsg1/name.cpp:79:2: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(newref, glb_namerefs, sizeof(u8) * glb_numnames); data/powder-118+dfsg1/name.cpp:144:5: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char buf[40]; data/powder-118+dfsg1/piety.cpp:1366:16: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. menu = new char *[numvalid+2]; data/powder-118+dfsg1/piety.cpp:1383:19: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. menu[i+1] = (char *) glb_goddefs[godlist[i]].classname; data/powder-118+dfsg1/piety.cpp:1565:5: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char *menu[NUM_GODS + 1]; data/powder-118+dfsg1/port/android/powder/jni/powder-jni.cpp:118:2: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(rawarr, glbFill, sizeof(jint) * pixelcount); data/powder-118+dfsg1/port/ds/hamfake.cpp:730:14: [2] (misc) fopen: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). result = fopen(buf, mode); data/powder-118+dfsg1/port/gp2x/hamfake.cpp:117:1: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char glb_rawSRAM[SRAMSIZE]; data/powder-118+dfsg1/port/gp2x/hamfake.cpp:651:10: [2] (misc) fopen: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). fp = fopen("powder.sav", "wb"); data/powder-118+dfsg1/port/gp2x/hamfake.cpp:1008:10: [2] (misc) fopen: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). fp = fopen("powder.sav", "rb"); data/powder-118+dfsg1/port/gp2x/hamfake.cpp:1202:2: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(dst, raw, TILEWIDTH*TILEHEIGHT); data/powder-118+dfsg1/port/gp2x/hamfake.cpp:1216:5: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(glbSpriteList[tileno].data, data, numtile * TILEWIDTH*TILEHEIGHT); data/powder-118+dfsg1/port/gp2x/hamfake.cpp:1309:12: [2] (misc) fopen: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). return fopen(path, mode); data/powder-118+dfsg1/port/psp/hamfake.cpp:112:1: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char glb_rawSRAM[SRAMSIZE]; data/powder-118+dfsg1/port/psp/hamfake.cpp:558:8: [2] (misc) fopen: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). fp = fopen("powder.sav", "wb"); data/powder-118+dfsg1/port/psp/hamfake.cpp:739:8: [2] (misc) fopen: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). fp = fopen("powder.sav", "rb"); data/powder-118+dfsg1/port/psp/hamfake.cpp:902:5: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(dst, raw, 8*8); data/powder-118+dfsg1/port/psp/hamfake.cpp:916:3: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(&glbSpriteList[tileno].data, data, numtile * 8 * 8); data/powder-118+dfsg1/port/psp/hamfake.cpp:1009:10: [2] (misc) fopen: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). return fopen(path, mode); data/powder-118+dfsg1/port/sdl/hamfake.cpp:173:1: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char glb_rawSRAM[SRAMSIZE]; data/powder-118+dfsg1/port/sdl/hamfake.cpp:1992:2: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(dst, raw, TILEWIDTH*TILEHEIGHT); data/powder-118+dfsg1/port/sdl/hamfake.cpp:2006:5: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(glbSpriteList[tileno].data, data, numtile * TILEWIDTH*TILEHEIGHT); data/powder-118+dfsg1/port/sdl/hamfake.cpp:2176:12: [2] (misc) fopen: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). return fopen(fullpath.buffer(), mode); data/powder-118+dfsg1/port/sdl/hamfake.cpp:2188:12: [2] (misc) fopen: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). return fopen(fullpath.buffer(), mode); data/powder-118+dfsg1/port/sdl/hamfake.cpp:2191:12: [2] (misc) fopen: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). return fopen(path, mode); data/powder-118+dfsg1/port/sdl/hamfake.h:70:5: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char myText[256]; data/powder-118+dfsg1/rand.cpp:43:5: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(myMT, mt, sizeof(unsigned long) * N); data/powder-118+dfsg1/rand.cpp:50:5: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(mt, myMT, sizeof(unsigned long) * N); data/powder-118+dfsg1/sramstream.cpp:525:5: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char zerotable[128]; data/powder-118+dfsg1/sramstream.cpp:636:5: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char zerotable[128]; data/powder-118+dfsg1/sramstream.h:96:5: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char myBuffer[1024]; data/powder-118+dfsg1/support/bmp2c/bmp2c.cpp:16:5: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char id[2]; data/powder-118+dfsg1/support/bmp2c/bmp2c.cpp:38:14: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. unsigned char c[2]; data/powder-118+dfsg1/support/bmp2c/bmp2c.cpp:76:8: [2] (misc) open: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). is.open(name, ios_base::in | ios_base::binary); data/powder-118+dfsg1/support/bmp2c/bmp2c.cpp:172:5: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char outputname[500]; data/powder-118+dfsg1/support/bmp2c/bmp2c.cpp:173:5: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char varname[500]; data/powder-118+dfsg1/support/bmp2c/bmp2c.cpp:198:2: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char buf[100]; data/powder-118+dfsg1/support/bmp2c/bmp2c.cpp:200:2: [2] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. Risk is low because the source has a constant maximum length. sprintf(buf, "0x%04x", (unsigned int) result[i]); data/powder-118+dfsg1/support/bmp2c/bmp2c.cpp:202:6: [2] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). Risk is low because the source is a constant string. strcat(buf, ", "); data/powder-118+dfsg1/support/builddpdf/builddpdf.cpp:30:16: [2] (integer) atoi: Unless checked, the resulting number can exceed the expected range (CWE-190). If source untrusted, check both minimum and maximum, even if the input had no minus sign (large numbers can roll over into negative number; consider saving to an unsigned value if that is intended). maxsides = atoi(argv[1]); data/powder-118+dfsg1/support/builddpdf/builddpdf.cpp:31:16: [2] (integer) atoi: Unless checked, the resulting number can exceed the expected range (CWE-190). If source untrusted, check both minimum and maximum, even if the input had no minus sign (large numbers can roll over into negative number; consider saving to an unsigned value if that is intended). maxrolls = atoi(argv[2]); data/powder-118+dfsg1/support/builddpdf/builddpdf.cpp:32:13: [2] (integer) atoi: Unless checked, the resulting number can exceed the expected range (CWE-190). If source untrusted, check both minimum and maximum, even if the input had no minus sign (large numbers can roll over into negative number; consider saving to an unsigned value if that is intended). scale = atoi(argv[3]); data/powder-118+dfsg1/support/builddpdf/dpdf.cpp:105:5: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(myProb, dpdf.myProb, sizeof(double) * (myMax - myMin + 1)); data/powder-118+dfsg1/support/builddpdf/dpdf.cpp:291:2: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(&prob[myMin - num], myProb, sizeof(double) * (myMax - myMin + 1)); data/powder-118+dfsg1/support/builddpdf/dpdf.cpp:301:2: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(prob, myProb, sizeof(double) * (myMax - myMin + 1)); data/powder-118+dfsg1/support/compendium/compendium.cpp:95:10: [2] (misc) fopen: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). fp = fopen(fname, "wb"); data/powder-118+dfsg1/support/compendium/compendium.cpp:164:10: [2] (misc) fopen: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). fp = fopen(fname, "wb"); data/powder-118+dfsg1/support/compendium/compendium.cpp:335:10: [2] (misc) fopen: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). fp = fopen(fname.buffer(), "wt"); data/powder-118+dfsg1/support/compendium/compendium.cpp:371:14: [2] (misc) fopen: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). fplist = fopen("moblist.txt", "wt"); data/powder-118+dfsg1/support/compendium/compendium.cpp:393:14: [2] (misc) fopen: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). fplist = fopen("spelllist.txt", "wt"); data/powder-118+dfsg1/support/encyclopedia2c/encyclopedia2c.cpp:163:3: [2] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). Risk is low because the source is a constant string. strcat(newlast, " "); data/powder-118+dfsg1/support/encyclopedia2c/encyclopedia2c.cpp:369:1: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char raw_input[1024]; data/powder-118+dfsg1/support/encyclopedia2c/encyclopedia2c.cpp:370:1: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char tabless_input[8192]; // Enough for 1k of tabs. data/powder-118+dfsg1/support/encyclopedia2c/encyclopedia2c.cpp:451:5: [2] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). Risk is low because the source is a constant string. strcat(headername, ".h"); data/powder-118+dfsg1/support/encyclopedia2c/encyclopedia2c.cpp:452:5: [2] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). Risk is low because the source is a constant string. strcat(cppname, ".cpp"); data/powder-118+dfsg1/support/encyclopedia2c/encyclopedia2c.cpp:528:2: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char bookname[1024], keyname[1024], entryname[1024]; data/powder-118+dfsg1/support/enummaker/enummaker.cpp:168:5: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char buf[512]; data/powder-118+dfsg1/support/enummaker/enummaker.cpp:274:12: [2] (integer) atoi: Unless checked, the resulting number can exceed the expected range (CWE-190). If source untrusted, check both minimum and maximum, even if the input had no minus sign (large numbers can roll over into negative number; consider saving to an unsigned value if that is intended). return atoi(text); data/powder-118+dfsg1/support/enummaker/enummaker.cpp:282:5: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char buf[512]; data/powder-118+dfsg1/support/enummaker/enummaker.cpp:296:2: [2] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. Risk is low because the source has a constant maximum length. sprintf(buf, "{ 0, 0, %d }", atoi_verify(src)); data/powder-118+dfsg1/support/enummaker/enummaker.cpp:315:2: [2] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. Risk is low because the source has a constant maximum length. sprintf(buf, "{ %d, %d, %d }", num, sides, bonus); data/powder-118+dfsg1/support/enummaker/enummaker.cpp:353:12: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. static char buf[512]; data/powder-118+dfsg1/support/enummaker/enummaker.cpp:593:5: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char tmp[10]; data/powder-118+dfsg1/support/enummaker/enummaker.cpp:595:12: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. static char output[1024]; data/powder-118+dfsg1/support/enummaker/enummaker.cpp:610:2: [2] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. Risk is low because the source has a constant maximum length. sprintf(tmp, "\\x%02x", val); data/powder-118+dfsg1/support/map2c/map2c.cpp:72:5: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char line[1024]; data/powder-118+dfsg1/support/map2c/map2c.cpp:89:18: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. glbMap = new char *[100]; data/powder-118+dfsg1/support/map2c/map2c.cpp:155:12: [2] (integer) atoi: Unless checked, the resulting number can exceed the expected range (CWE-190). If source untrusted, check both minimum and maximum, even if the input had no minus sign (large numbers can roll over into negative number; consider saving to an unsigned value if that is intended). return atoi(word); data/powder-118+dfsg1/support/map2c/map2c.cpp:173:17: [2] (integer) atoi: Unless checked, the resulting number can exceed the expected range (CWE-190). If source untrusted, check both minimum and maximum, even if the input had no minus sign (large numbers can roll over into negative number; consider saving to an unsigned value if that is intended). glb_minlevel = atoi(val); data/powder-118+dfsg1/support/map2c/map2c.cpp:175:17: [2] (integer) atoi: Unless checked, the resulting number can exceed the expected range (CWE-190). If source untrusted, check both minimum and maximum, even if the input had no minus sign (large numbers can roll over into negative number; consider saving to an unsigned value if that is intended). glb_maxlevel = atoi(val); data/powder-118+dfsg1/support/map2c/map2c.cpp:177:15: [2] (integer) atoi: Unless checked, the resulting number can exceed the expected range (CWE-190). If source untrusted, check both minimum and maximum, even if the input had no minus sign (large numbers can roll over into negative number; consider saving to an unsigned value if that is intended). glb_rarity = atoi(val); data/powder-118+dfsg1/support/map2c/map2c.cpp:196:10: [2] (integer) atoi: Unless checked, the resulting number can exceed the expected range (CWE-190). If source untrusted, check both minimum and maximum, even if the input had no minus sign (large numbers can roll over into negative number; consider saving to an unsigned value if that is intended). glb_x = atoi(val); data/powder-118+dfsg1/support/map2c/map2c.cpp:199:14: [2] (integer) atoi: Unless checked, the resulting number can exceed the expected range (CWE-190). If source untrusted, check both minimum and maximum, even if the input had no minus sign (large numbers can roll over into negative number; consider saving to an unsigned value if that is intended). glb_y = atoi(val); data/powder-118+dfsg1/support/map2c/map2c.cpp:229:5: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char line[1024]; data/powder-118+dfsg1/support/splicebmp/splicebmp.cpp:17:16: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. const unsigned char image_key[image_keylen] = data/powder-118+dfsg1/support/splicebmp/splicebmp.cpp:38:16: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. const unsigned char palette_key[palette_keylen] = data/powder-118+dfsg1/support/splicebmp/splicebmp.cpp:80:5: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char id[2]; data/powder-118+dfsg1/support/splicebmp/splicebmp.cpp:113:8: [2] (misc) open: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). is.open(name, ios_base::in | ios_base::binary); data/powder-118+dfsg1/support/splicebmp/splicebmp.cpp:205:14: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. unsigned char tmppal[512]; data/powder-118+dfsg1/support/splicebmp/splicebmp.cpp:209:5: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(tmppal, oldpal, oldsize * 2); data/powder-118+dfsg1/support/splicebmp/splicebmp.cpp:227:5: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(newpal, tmppal, 512); data/powder-118+dfsg1/support/splicebmp/splicebmp.cpp:289:8: [2] (misc) open: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). is.open("powder.gba", ios_base::in | ios_base::binary); data/powder-118+dfsg1/support/splicebmp/splicebmp.cpp:332:14: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. unsigned char *bitmap, palette[512], *tiled; data/powder-118+dfsg1/support/splicebmp/splicebmp.cpp:342:14: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. unsigned char palette_lut[256]; data/powder-118+dfsg1/support/splicebmp/splicebmp.cpp:353:8: [2] (misc) open: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). os.open("powder_c.gba", ios_base::out | ios_base::trunc | ios_base::binary); data/powder-118+dfsg1/support/tile2c/bmp.cpp:29:5: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char id[2]; data/powder-118+dfsg1/support/tile2c/bmp.cpp:112:10: [2] (misc) fopen: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). fp = fopen(name, "rb"); data/powder-118+dfsg1/support/tile2c/bmp.cpp:270:10: [2] (misc) fopen: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). fp = fopen(fname, "wt"); data/powder-118+dfsg1/support/tile2c/bmp.cpp:301:10: [2] (misc) fopen: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). fp = fopen(fname, "wt"); data/powder-118+dfsg1/support/tile2c/bmp.cpp:337:11: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. const char *aname[NUM_ALPHA] = data/powder-118+dfsg1/support/tile2c/bmp.cpp:345:5: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char buf[100], buf2[100]; data/powder-118+dfsg1/support/txt2c/txt2c.cpp:62:5: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char line[2005]; data/powder-118+dfsg1/support/txt2c/txt2c.cpp:63:5: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char quote[4000]; data/powder-118+dfsg1/victory.cpp:34:1: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char glbAvatarName[100]; data/powder-118+dfsg1/victory.cpp:130:11: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. const char *intrinsiclist[NUM_INTRINSICS+1]; data/powder-118+dfsg1/victory.cpp:212:5: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char *moblist[NUM_MOBS+1]; // room for null` data/powder-118+dfsg1/victory.cpp:301:2: [2] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). Risk is low because the source is a constant string. strcpy(glbAvatarName, "Lazy Player"); data/powder-118+dfsg1/victory.h:24:8: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. extern char glbAvatarName[100]; data/powder-118+dfsg1/action.cpp:3571:20: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). num_options = strlen(glb_spellbookdefs[magicclass].spells) + data/powder-118+dfsg1/action.cpp:3572:6: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). strlen(glb_spellbookdefs[magicclass].skills); data/powder-118+dfsg1/action.cpp:3587:7: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). if (strlen(glb_spellbookdefs[magicclass].spells)) data/powder-118+dfsg1/action.cpp:3617:30: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). options[i] = new char [strlen(glb_spelldefs[spell].name) + 5]; data/powder-118+dfsg1/action.cpp:3634:30: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). options[i] = new char [strlen(glb_skilldefs[skill].name) + 5]; data/powder-118+dfsg1/buf.cpp:45:11: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). int strlen() { return ::strlen(myData); } data/powder-118+dfsg1/buf.cpp:45:31: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). int strlen() { return ::strlen(myData); } data/powder-118+dfsg1/buf.cpp:120:12: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). slen = strlen() + 1; data/powder-118+dfsg1/buf.cpp:194:33: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). myBuffer = new BUF_int(text, ::strlen(text)+1); data/powder-118+dfsg1/buf.cpp:224:27: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). char *text = new char [::strlen(src)+1]; data/powder-118+dfsg1/buf.cpp:231:6: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). BUF::strlen() const data/powder-118+dfsg1/buf.cpp:236:22: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). return myBuffer->strlen(); data/powder-118+dfsg1/buf.cpp:271:13: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). mylen = strlen(); data/powder-118+dfsg1/buf.cpp:272:16: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). srclen = ::strlen(src); data/powder-118+dfsg1/buf.cpp:316:11: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). len = strlen(); data/powder-118+dfsg1/buf.cpp:380:12: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). result = strlen(); data/powder-118+dfsg1/buf.cpp:468:22: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). len = myBuffer->strlen() + 1; data/powder-118+dfsg1/buf.h:72:10: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). int strlen() const; data/powder-118+dfsg1/creature.cpp:4509:26: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). deathlist[rand_choice(strlen(deathlist))]].msg; data/powder-118+dfsg1/creature.cpp:8976:8: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). is.read(val, 8); data/powder-118+dfsg1/creature.cpp:8978:8: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). is.read(val, 8); data/powder-118+dfsg1/creature.cpp:9042:8: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). is.read(val, 16); data/powder-118+dfsg1/creature.cpp:9044:8: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). is.read(val, 8); data/powder-118+dfsg1/creature.cpp:9047:8: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). is.read(val, 16); data/powder-118+dfsg1/creature.cpp:9050:8: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). is.read(val, 16); data/powder-118+dfsg1/creature.cpp:9052:8: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). is.read(val, 8); data/powder-118+dfsg1/creature.cpp:9055:8: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). is.read(val, 16); data/powder-118+dfsg1/creature.cpp:9058:8: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). is.read(val, 16); data/powder-118+dfsg1/gfxengine.cpp:2226:23: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). gfx_printtext(x+strlen(entry), j, SYMBOLSTRING_LEFT); data/powder-118+dfsg1/gfxengine.cpp:2579:13: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). width = strlen(prompt); data/powder-118+dfsg1/gfxengine.cpp:2783:7: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). if (strlen(curtext) >= 30 * (18 - 4)) data/powder-118+dfsg1/gfxengine.cpp:2833:14: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). dstlen = strlen(dst); data/powder-118+dfsg1/gfxengine.cpp:2964:14: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). dstlen = strlen(dst); data/powder-118+dfsg1/gfxengine.cpp:2971:14: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). dstlen = strlen(dst); data/powder-118+dfsg1/grammar.cpp:87:15: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). noun = tmp + strlen(tmp) - 1; data/powder-118+dfsg1/grammar.cpp:197:24: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). size_t nounlen = strlen(noun); data/powder-118+dfsg1/grammar.cpp:659:24: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). size_t verblen = strlen(verb); data/powder-118+dfsg1/item.cpp:4678:8: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). is.read(val, 8); data/powder-118+dfsg1/main.cpp:1638:21: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). gfx_printtext(30 - strlen(get_glb_author()), 19, data/powder-118+dfsg1/main.cpp:2058:8: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). is.read(val, 8); data/powder-118+dfsg1/main.cpp:2061:8: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). is.read(val, 8); data/powder-118+dfsg1/main.cpp:2064:8: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). is.read(val, 8); data/powder-118+dfsg1/main.cpp:2068:8: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). is.read(totaltime, 32); data/powder-118+dfsg1/main.cpp:5376:24: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). char *mi = new char[strlen(m[j])+10]; data/powder-118+dfsg1/map.cpp:3521:8: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). is.read(val, 32); data/powder-118+dfsg1/map.cpp:3525:5: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). is.read(val, 8); data/powder-118+dfsg1/map.cpp:3527:5: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). is.read(val, 8); data/powder-118+dfsg1/map.cpp:3708:8: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). is.read(val, 8); data/powder-118+dfsg1/msg.cpp:170:14: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). dstlen = strlen(dst); data/powder-118+dfsg1/piety.cpp:109:5: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). is.read(val, 16); data/powder-118+dfsg1/piety.cpp:111:5: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). is.read(val, 16); data/powder-118+dfsg1/piety.cpp:115:8: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). is.read(val, 8); data/powder-118+dfsg1/piety.cpp:118:8: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). is.read(val, 8); data/powder-118+dfsg1/piety.cpp:121:8: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). is.read(val, 8); data/powder-118+dfsg1/piety.cpp:124:8: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). is.read(val, 8); data/powder-118+dfsg1/piety.cpp:126:8: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). is.read(val, 8); data/powder-118+dfsg1/piety.cpp:1584:6: [1] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). Risk is low because the source is a constant character. strcat(menu[god], " "); data/powder-118+dfsg1/piety.cpp:1587:6: [1] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). Risk is low because the source is a constant character. strcat(menu[god], "*"); data/powder-118+dfsg1/piety.cpp:1589:6: [1] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). Risk is low because the source is a constant character. strcat(menu[god], "+"); data/powder-118+dfsg1/port/android/powder/jni/powder-jni.cpp:176:5: [1] (buffer) strncpy: Easily used incorrectly; doesn't always \0-terminate or check for invalid pointers [MS-banned] (CWE-120). strncpy(glbInputData.myText, localtext, glbInputData.myMaxLen); data/powder-118+dfsg1/port/ds/hamfake.cpp:727:20: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). buf = new char[strlen(path) + strlen(glbAbsoluteDataPath) + 5]; data/powder-118+dfsg1/port/ds/hamfake.cpp:727:35: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). buf = new char[strlen(path) + strlen(glbAbsoluteDataPath) + 5]; data/powder-118+dfsg1/rand.cpp:31:11: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). void read(); data/powder-118+dfsg1/rand.cpp:41:13: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). RAND_STATE::read() data/powder-118+dfsg1/rand.cpp:63:12: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). state->read(); data/powder-118+dfsg1/rand.cpp:634:36: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). text[pos++] = vowels[rand_choice(strlen(vowels))]; data/powder-118+dfsg1/rand.cpp:639:38: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). text[pos++] = frictive[rand_choice(strlen(frictive))]; data/powder-118+dfsg1/rand.cpp:642:37: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). text[pos++] = plosive[rand_choice(strlen(plosive))]; data/powder-118+dfsg1/rand.cpp:645:35: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). text[pos++] = weird[rand_choice(strlen(weird))]; data/powder-118+dfsg1/speed.cpp:163:8: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). is.read(glbGameMoves, 32); data/powder-118+dfsg1/speed.cpp:164:8: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). is.read(glbHeartbeatCount, 32); data/powder-118+dfsg1/sramstream.cpp:160:13: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). SRAMSTREAM::read(int &val, int bits) data/powder-118+dfsg1/sramstream.h:62:11: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). bool read(int &val, int bits); data/powder-118+dfsg1/support/bmp2c/bmp2c.cpp:43:8: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). is.read((char *) c, 2); data/powder-118+dfsg1/support/bmp2c/bmp2c.cpp:84:8: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). is.read(head.id, 2); data/powder-118+dfsg1/support/bmp2c/bmp2c.cpp:122:9: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). is.read((char *) &blue, 1); data/powder-118+dfsg1/support/bmp2c/bmp2c.cpp:123:9: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). is.read((char *) &green, 1); data/powder-118+dfsg1/support/bmp2c/bmp2c.cpp:124:9: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). is.read((char *) &red, 1); data/powder-118+dfsg1/support/builddpdf/dpdf.cpp:502:8: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). is.read((char *) &myMin, sizeof(int)); data/powder-118+dfsg1/support/builddpdf/dpdf.cpp:503:8: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). is.read((char *) &myMax, sizeof(int)); data/powder-118+dfsg1/support/builddpdf/dpdf.cpp:507:5: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). is.read((char *) &myProb[i-myMin], sizeof(double)); data/powder-118+dfsg1/support/encyclopedia2c/encyclopedia2c.cpp:130:15: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). linelen = strlen(text); data/powder-118+dfsg1/support/encyclopedia2c/encyclopedia2c.cpp:153:31: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). newlast = new char[linelen + strlen(myLastLine) + 5]; data/powder-118+dfsg1/support/encyclopedia2c/encyclopedia2c.cpp:155:6: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). if (strlen(newlast)) data/powder-118+dfsg1/support/encyclopedia2c/encyclopedia2c.cpp:157:25: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). lastchar = newlast[strlen(newlast)-1]; data/powder-118+dfsg1/support/encyclopedia2c/encyclopedia2c.cpp:166:3: [1] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). Risk is low because the source is a constant character. strcat(newlast, " "); data/powder-118+dfsg1/support/encyclopedia2c/encyclopedia2c.cpp:442:27: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). headername = new char[strlen(argv[1]) + 10]; data/powder-118+dfsg1/support/encyclopedia2c/encyclopedia2c.cpp:443:24: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). cppname = new char[strlen(argv[1]) + 10]; data/powder-118+dfsg1/support/encyclopedia2c/encyclopedia2c.cpp:561:2: [1] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). Risk is low because the source is a constant character. strcat(keyname, "_"); data/powder-118+dfsg1/support/enummaker/enummaker.cpp:144:5: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). is.read(&c, 1); data/powder-118+dfsg1/support/enummaker/enummaker.cpp:195:5: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). is.read(&c, 1); data/powder-118+dfsg1/support/enummaker/enummaker.cpp:202:9: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). is.read(&c, 1); data/powder-118+dfsg1/support/enummaker/enummaker.cpp:598:5: [1] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). Risk is low because the source is a constant character. strcpy(output, "\""); data/powder-118+dfsg1/support/enummaker/enummaker.cpp:615:5: [1] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). Risk is low because the source is a constant character. strcat(output, "\""); data/powder-118+dfsg1/support/enummaker/enummaker.cpp:784:31: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). total = (char *) malloc(strlen(item->myValue) + strlen(varvalue) + 3); data/powder-118+dfsg1/support/enummaker/enummaker.cpp:784:55: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). total = (char *) malloc(strlen(item->myValue) + strlen(varvalue) + 3); data/powder-118+dfsg1/support/enummaker/enummaker.cpp:786:7: [1] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). Risk is low because the source is a constant character. strcat(total, " "); data/powder-118+dfsg1/support/map2c/map2c.cpp:106:6: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). if (strlen(line) != glbWidth + 2) data/powder-118+dfsg1/support/splicebmp/splicebmp.cpp:121:8: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). is.read((char *) &head, sizeof(BMPHEAD)); data/powder-118+dfsg1/support/splicebmp/splicebmp.cpp:140:8: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). is.read((char *) &filepalette, sizeof(RGBQUAD) * 256); data/powder-118+dfsg1/support/splicebmp/splicebmp.cpp:159:8: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). is.read((char *)result, size); data/powder-118+dfsg1/support/splicebmp/splicebmp.cpp:307:8: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). is.read((char *)powdergba, powderlen); ANALYSIS SUMMARY: Hits = 729 Lines analyzed = 77006 in approximately 1.36 seconds (56698 lines/second) Physical Source Lines of Code (SLOC) = 55451 Hits@level = [0] 126 [1] 102 [2] 193 [3] 6 [4] 428 [5] 0 Hits@level+ = [0+] 855 [1+] 729 [2+] 627 [3+] 434 [4+] 428 [5+] 0 Hits/KSLOC@level+ = [0+] 15.419 [1+] 13.1467 [2+] 11.3073 [3+] 7.82673 [4+] 7.71853 [5+] 0 Dot directories skipped = 2 (--followdotdir overrides) Minimum risk level = 1 Not every hit is necessarily a security vulnerability. There may be other security vulnerabilities; review your code! See 'Secure Programming HOWTO' (https://dwheeler.com/secure-programs) for more information.