Prevent isolated second surrogate in U& syntax
authorPeter Eisentraut <[email protected]>
Fri, 25 Sep 2009 21:13:06 +0000 (21:13 +0000)
committerPeter Eisentraut <[email protected]>
Fri, 25 Sep 2009 21:13:06 +0000 (21:13 +0000)
src/backend/parser/scan.l

index 0b8d5f7cd87790e45b6a51cfa3ff48c86d0660b1..1557a300ab34c7afe8469495b43d32a82a2bad97 100644 (file)
@@ -1223,6 +1223,9 @@ litbuf_udeescape(unsigned char escape, base_yyscan_t yyscanner)
                                                yyerror("invalid Unicode surrogate pair");
                                        }
                                }
+                               else if (is_utf16_surrogate_second(unicode))
+                                       yyerror("invalid Unicode surrogate pair");
+
                                if (is_utf16_surrogate_first(unicode))
                                        pair_first = unicode;
                                else
@@ -1253,6 +1256,9 @@ litbuf_udeescape(unsigned char escape, base_yyscan_t yyscanner)
                                                yyerror("invalid Unicode surrogate pair");
                                        }
                                }
+                               else if (is_utf16_surrogate_second(unicode))
+                                       yyerror("invalid Unicode surrogate pair");
+
                                if (is_utf16_surrogate_first(unicode))
                                        pair_first = unicode;
                                else