From cdc375e6bae681e24b0cc6207ecfcc27b425baf2 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Wed, 18 Sep 2024 20:26:42 +0200 Subject: [PATCH] xgettext: PHP: Disallow character \x7f in identifiers. * gettext-tools/src/x-php.c (phase4_get): Don't allow character \x7f in symbol tokens. --- gettext-tools/src/x-php.c | 91 +++++++++++++++++++-------------------- 1 file changed, 45 insertions(+), 46 deletions(-) diff --git a/gettext-tools/src/x-php.c b/gettext-tools/src/x-php.c index b4f53a25e..dd8a9f07b 100644 --- a/gettext-tools/src/x-php.c +++ b/gettext-tools/src/x-php.c @@ -49,12 +49,11 @@ /* The PHP syntax is defined in phpdoc/manual/langref.html. - See also php-4.1.0/Zend/zend_language_scanner.l - and php-4.1.0/Zend/zend_language_parser.y. + See also php-8.1.0/Zend/zend_language_scanner.l + and php-8.1.0/Zend/zend_language_parser.y. Note that variable and function names can contain bytes in the range - 0x7f..0xff; see - http://www.php.net/manual/en/language.variables.php - http://www.php.net/manual/en/language.functions.php */ + 0x80..0xff; see + https://www.php.net/manual/en/language.variables.basics.php */ /* ====================== Keyword set customization. ====================== */ @@ -825,25 +824,25 @@ phase4_get (token_ty *tp) case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': - case 127: case 128: case 129: case 130: case 131: case 132: case 133: - case 134: case 135: case 136: case 137: case 138: case 139: case 140: - case 141: case 142: case 143: case 144: case 145: case 146: case 147: - case 148: case 149: case 150: case 151: case 152: case 153: case 154: - case 155: case 156: case 157: case 158: case 159: case 160: case 161: - case 162: case 163: case 164: case 165: case 166: case 167: case 168: - case 169: case 170: case 171: case 172: case 173: case 174: case 175: - case 176: case 177: case 178: case 179: case 180: case 181: case 182: - case 183: case 184: case 185: case 186: case 187: case 188: case 189: - case 190: case 191: case 192: case 193: case 194: case 195: case 196: - case 197: case 198: case 199: case 200: case 201: case 202: case 203: - case 204: case 205: case 206: case 207: case 208: case 209: case 210: - case 211: case 212: case 213: case 214: case 215: case 216: case 217: - case 218: case 219: case 220: case 221: case 222: case 223: case 224: - case 225: case 226: case 227: case 228: case 229: case 230: case 231: - case 232: case 233: case 234: case 235: case 236: case 237: case 238: - case 239: case 240: case 241: case 242: case 243: case 244: case 245: - case 246: case 247: case 248: case 249: case 250: case 251: case 252: - case 253: case 254: case 255: + case 128: case 129: case 130: case 131: case 132: case 133: case 134: + case 135: case 136: case 137: case 138: case 139: case 140: case 141: + case 142: case 143: case 144: case 145: case 146: case 147: case 148: + case 149: case 150: case 151: case 152: case 153: case 154: case 155: + case 156: case 157: case 158: case 159: case 160: case 161: case 162: + case 163: case 164: case 165: case 166: case 167: case 168: case 169: + case 170: case 171: case 172: case 173: case 174: case 175: case 176: + case 177: case 178: case 179: case 180: case 181: case 182: case 183: + case 184: case 185: case 186: case 187: case 188: case 189: case 190: + case 191: case 192: case 193: case 194: case 195: case 196: case 197: + case 198: case 199: case 200: case 201: case 202: case 203: case 204: + case 205: case 206: case 207: case 208: case 209: case 210: case 211: + case 212: case 213: case 214: case 215: case 216: case 217: case 218: + case 219: case 220: case 221: case 222: case 223: case 224: case 225: + case 226: case 227: case 228: case 229: case 230: case 231: case 232: + case 233: case 234: case 235: case 236: case 237: case 238: case 239: + case 240: case 241: case 242: case 243: case 244: case 245: case 246: + case 247: case 248: case 249: case 250: case 251: case 252: case 253: + case 254: case 255: bufpos = 0; for (;;) { @@ -869,28 +868,28 @@ phase4_get (token_ty *tp) case 'y': case 'z': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': - case 127: case 128: case 129: case 130: case 131: case 132: - case 133: case 134: case 135: case 136: case 137: case 138: - case 139: case 140: case 141: case 142: case 143: case 144: - case 145: case 146: case 147: case 148: case 149: case 150: - case 151: case 152: case 153: case 154: case 155: case 156: - case 157: case 158: case 159: case 160: case 161: case 162: - case 163: case 164: case 165: case 166: case 167: case 168: - case 169: case 170: case 171: case 172: case 173: case 174: - case 175: case 176: case 177: case 178: case 179: case 180: - case 181: case 182: case 183: case 184: case 185: case 186: - case 187: case 188: case 189: case 190: case 191: case 192: - case 193: case 194: case 195: case 196: case 197: case 198: - case 199: case 200: case 201: case 202: case 203: case 204: - case 205: case 206: case 207: case 208: case 209: case 210: - case 211: case 212: case 213: case 214: case 215: case 216: - case 217: case 218: case 219: case 220: case 221: case 222: - case 223: case 224: case 225: case 226: case 227: case 228: - case 229: case 230: case 231: case 232: case 233: case 234: - case 235: case 236: case 237: case 238: case 239: case 240: - case 241: case 242: case 243: case 244: case 245: case 246: - case 247: case 248: case 249: case 250: case 251: case 252: - case 253: case 254: case 255: + case 128: case 129: case 130: case 131: case 132: case 133: + case 134: case 135: case 136: case 137: case 138: case 139: + case 140: case 141: case 142: case 143: case 144: case 145: + case 146: case 147: case 148: case 149: case 150: case 151: + case 152: case 153: case 154: case 155: case 156: case 157: + case 158: case 159: case 160: case 161: case 162: case 163: + case 164: case 165: case 166: case 167: case 168: case 169: + case 170: case 171: case 172: case 173: case 174: case 175: + case 176: case 177: case 178: case 179: case 180: case 181: + case 182: case 183: case 184: case 185: case 186: case 187: + case 188: case 189: case 190: case 191: case 192: case 193: + case 194: case 195: case 196: case 197: case 198: case 199: + case 200: case 201: case 202: case 203: case 204: case 205: + case 206: case 207: case 208: case 209: case 210: case 211: + case 212: case 213: case 214: case 215: case 216: case 217: + case 218: case 219: case 220: case 221: case 222: case 223: + case 224: case 225: case 226: case 227: case 228: case 229: + case 230: case 231: case 232: case 233: case 234: case 235: + case 236: case 237: case 238: case 239: case 240: case 241: + case 242: case 243: case 244: case 245: case 246: case 247: + case 248: case 249: case 250: case 251: case 252: case 253: + case 254: case 255: continue; default: -- 2.47.3