mirror of
https://github.com/postgres/postgres.git
synced 2025-05-09 18:21:05 +03:00
Avoid potential buffer overflow crash
A pointer to a C string was treated as a pointer to a "name" datum and passed to SPI_execute_plan(). This pointer would then end up being passed through datumCopy(), which would try to copy the entire 64 bytes of name data, thus running past the end of the C string. Fix by converting the string to a proper name structure. Found by LLVM AddressSanitizer.
This commit is contained in:
parent
6bc68af1dc
commit
0f8ff3e467
@ -633,7 +633,7 @@ pg_get_viewdef_worker(Oid viewoid, int prettyFlags, int wrapColumn)
|
||||
* Get the pg_rewrite tuple for the view's SELECT rule
|
||||
*/
|
||||
args[0] = ObjectIdGetDatum(viewoid);
|
||||
args[1] = PointerGetDatum(ViewSelectRuleName);
|
||||
args[1] = DirectFunctionCall1(namein, CStringGetDatum(ViewSelectRuleName));
|
||||
nulls[0] = ' ';
|
||||
nulls[1] = ' ';
|
||||
spirc = SPI_execute_plan(plan_getviewrule, args, nulls, true, 2);
|
||||
|
Loading…
x
Reference in New Issue
Block a user