44938.phpt 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. --TEST--
  2. #44938: gettext functions crash with overlong strings
  3. --EXTENSIONS--
  4. gettext
  5. --FILE--
  6. <?php
  7. $overflown = str_repeat('C', 8476509);
  8. $msgid = "msgid";
  9. $domain = "domain";
  10. $category = "cat";
  11. try {
  12. bindtextdomain($overflown, 'path');
  13. } catch (ValueError $exception) {
  14. echo $exception->getMessage() . "\n";
  15. }
  16. try {
  17. dngettext($overflown, $msgid, $msgid, 1);
  18. } catch (ValueError $exception) {
  19. echo $exception->getMessage() . "\n";
  20. }
  21. try {
  22. dngettext($domain, $overflown, $msgid, 1);
  23. } catch (ValueError $exception) {
  24. echo $exception->getMessage() . "\n";
  25. }
  26. try {
  27. dngettext($domain, $msgid, $overflown, 1);
  28. } catch (ValueError $exception) {
  29. echo $exception->getMessage() . "\n";
  30. }
  31. try {
  32. gettext($overflown);
  33. } catch (ValueError $exception) {
  34. echo $exception->getMessage() . "\n";
  35. }
  36. try {
  37. ngettext($overflown, $msgid, -1);
  38. } catch (ValueError $exception) {
  39. echo $exception->getMessage() . "\n";
  40. }
  41. try {
  42. ngettext($msgid, $overflown, -1);
  43. } catch (ValueError $exception) {
  44. echo $exception->getMessage() . "\n";
  45. }
  46. try {
  47. dcgettext($overflown, $msgid, -1);
  48. } catch (ValueError $exception) {
  49. echo $exception->getMessage() . "\n";
  50. }
  51. try {
  52. dcgettext($domain, $overflown, -1);
  53. } catch (ValueError $exception) {
  54. echo $exception->getMessage() . "\n";
  55. }
  56. try {
  57. dcngettext($overflown, $msgid, $msgid, -1, -1);
  58. } catch (ValueError $exception) {
  59. echo $exception->getMessage() . "\n";
  60. }
  61. try {
  62. dcngettext($domain, $overflown, $msgid, -1, -1);
  63. } catch (ValueError $exception) {
  64. echo $exception->getMessage() . "\n";
  65. }
  66. try {
  67. dcngettext($domain, $msgid, $overflown, -1, -1);
  68. } catch (ValueError $exception) {
  69. echo $exception->getMessage() . "\n";
  70. }
  71. try {
  72. dgettext($overflown, $msgid);
  73. } catch (ValueError $exception) {
  74. echo $exception->getMessage() . "\n";
  75. }
  76. try {
  77. dgettext($domain, $overflown);
  78. } catch (ValueError $exception) {
  79. echo $exception->getMessage() . "\n";
  80. }
  81. try {
  82. textdomain($overflown);
  83. } catch (ValueError $exception) {
  84. echo $exception->getMessage() . "\n";
  85. }
  86. ?>
  87. --EXPECT--
  88. bindtextdomain(): Argument #1 ($domain) is too long
  89. dngettext(): Argument #1 ($domain) is too long
  90. dngettext(): Argument #2 ($singular) is too long
  91. dngettext(): Argument #3 ($plural) is too long
  92. gettext(): Argument #1 ($message) is too long
  93. ngettext(): Argument #1 ($singular) is too long
  94. ngettext(): Argument #2 ($plural) is too long
  95. dcgettext(): Argument #1 ($domain) is too long
  96. dcgettext(): Argument #2 ($message) is too long
  97. dcngettext(): Argument #1 ($domain) is too long
  98. dcngettext(): Argument #2 ($singular) is too long
  99. dcngettext(): Argument #3 ($plural) is too long
  100. dgettext(): Argument #1 ($domain) is too long
  101. dgettext(): Argument #2 ($message) is too long
  102. textdomain(): Argument #1 ($domain) is too long