diff options
Diffstat (limited to 'indra/llprimitive')
-rw-r--r-- | indra/llprimitive/llprimitive.cpp | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/indra/llprimitive/llprimitive.cpp b/indra/llprimitive/llprimitive.cpp index fa0b4747e6..13719d0a62 100644 --- a/indra/llprimitive/llprimitive.cpp +++ b/indra/llprimitive/llprimitive.cpp @@ -777,14 +777,14 @@ const char * LLPrimitive::pCodeToString(const LLPCode pcode) { snprintf(mask, sizeof(mask), "hemi"); /* Flawfinder: ignore */ } - else if (mask != 0) + else { snprintf(mask, sizeof(mask), "%x", mask_code); /* Flawfinder: ignore */ } - else - { - mask[0] = 0; - } + + // extra sanity against snprintf() being naturally crap + mask[sizeof(mask)-1] = '\0'; + shape[sizeof(shape)-1] = '\0'; if (mask[0]) { @@ -795,6 +795,11 @@ const char * LLPrimitive::pCodeToString(const LLPCode pcode) snprintf(pcode_string, sizeof(pcode_string), "%s", shape); /* Flawfinder: ignore */ } } + + // Be really sure that pcode_string is nul-terminated after we've + // been using crappy snprintf() to build it. + pcode_string[sizeof(pcode_string)-1] = '\0'; + return pcode_string; } |