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.