Change 13410 by jhi@alpha on 2001/12/01 18:43:11

        Try to protect against wild langinfo() arguments.

Affected files ...

.... //depot/perl/ext/I18N/Langinfo/Langinfo.xs#4 edit

Differences ...

==== //depot/perl/ext/I18N/Langinfo/Langinfo.xs#4 (text) ====
Index: perl/ext/I18N/Langinfo/Langinfo.xs
--- perl/ext/I18N/Langinfo/Langinfo.xs.~1~      Sat Dec  1 12:00:05 2001
+++ perl/ext/I18N/Langinfo/Langinfo.xs  Sat Dec  1 12:00:05 2001
@@ -19,8 +19,32 @@
        int     code
   CODE:
 #ifdef HAS_NL_LANGINFO
-       char *s = nl_langinfo(code);
-       RETVAL = newSVpvn(s, strlen(s));
+       char *s;
+       if (code) { /* bold assumption: all valid langinfo codes > 0 */
+#ifdef _MAXSTRMSG
+           if (code >= _MAXSTRMSG
+               RETVAL = &PL_sv_undef;
+           else
+#else
+#   ifdef _NL_NUM_ITEMS
+           if (code >= _NL_NUM_ITEMS)
+               RETVAL = &PL_sv_undef;
+           else
+#   else
+#       ifdef _NL_NUM
+           if (code >= _NL_NUM)
+               RETVAL = &PL_sv_undef;
+           else
+#       endif
+#   endif
+#endif
+           {
+               s = nl_langinfo(code);
+               RETVAL = newSVpvn(s, strlen(s));
+           }
+       } else {
+           RETVAL = &PL_sv_undef;
+       }
 #else
        croak("nl_langinfo() not implemented on this architecture");
 #endif
End of Patch.

Reply via email to