Re: Possible bug in plpgsql/src/gram.y - Mailing list pgsql-hackers
| From | Bruce Momjian |
|---|---|
| Subject | Re: Possible bug in plpgsql/src/gram.y |
| Date | |
| Msg-id | 200107120118.f6C1IiM11618@candle.pha.pa.us Whole thread Raw |
| In response to | Possible bug in plpgsql/src/gram.y (Ian Lance Taylor <ian@airs.com>) |
| Responses |
Re: Possible bug in plpgsql/src/gram.y
|
| List | pgsql-hackers |
Confirmed. I found a second problem in the file too, very similar.
Patch applied.
> In this bit of code in src/pl/plpgsql/src/gram.y in the current CVS
> sources, curname_def is defined as PLpgSQL_expr * but it is is
> allocated the space required for a PLpgSQL_var. This looks like a
> bug.
>
> Ian
>
> | decl_varname K_CURSOR decl_cursor_args decl_is_from K_SELECT decl_cursor_query
> {
> PLpgSQL_var *new;
> PLpgSQL_expr *curname_def;
> char buf[1024];
> char *cp1;
> char *cp2;
>
> plpgsql_ns_pop();
>
> new = malloc(sizeof(PLpgSQL_var));
> memset(new, 0, sizeof(PLpgSQL_var));
>
> curname_def = malloc(sizeof(PLpgSQL_var));
> memset(curname_def, 0, sizeof(PLpgSQL_var));
>
> ---------------------------(end of broadcast)---------------------------
> TIP 3: if posting/reading through Usenet, please send an appropriate
> subscribe-nomail command to majordomo@postgresql.org so that your
> message can get through to the mailing list cleanly
>
--
Bruce Momjian | http://candle.pha.pa.us
pgman@candle.pha.pa.us | (610) 853-3000
+ If your life is a hard drive, | 830 Blythe Avenue
+ Christ can be your backup. | Drexel Hill, Pennsylvania 19026
Index: src/pl/plpgsql/src/gram.y
===================================================================
RCS file: /home/projects/pgsql/cvsroot/pgsql/src/pl/plpgsql/src/gram.y,v
retrieving revision 1.22
diff -c -r1.22 gram.y
*** src/pl/plpgsql/src/gram.y 2001/07/11 18:54:18 1.22
--- src/pl/plpgsql/src/gram.y 2001/07/12 01:15:05
***************
*** 332,338 ****
{
PLpgSQL_rec *new;
! new = malloc(sizeof(PLpgSQL_var));
new->dtype = PLPGSQL_DTYPE_REC;
new->refname = $1.name;
--- 332,338 ----
{
PLpgSQL_rec *new;
! new = malloc(sizeof(PLpgSQL_rec));
new->dtype = PLPGSQL_DTYPE_REC;
new->refname = $1.name;
***************
*** 374,381 ****
new = malloc(sizeof(PLpgSQL_var));
memset(new, 0, sizeof(PLpgSQL_var));
! curname_def = malloc(sizeof(PLpgSQL_var));
! memset(curname_def, 0, sizeof(PLpgSQL_var));
new->dtype = PLPGSQL_DTYPE_VAR;
new->refname = $1.name;
--- 374,381 ----
new = malloc(sizeof(PLpgSQL_var));
memset(new, 0, sizeof(PLpgSQL_var));
! curname_def = malloc(sizeof(PLpgSQL_expr));
! memset(curname_def, 0, sizeof(PLpgSQL_expr));
new->dtype = PLPGSQL_DTYPE_VAR;
new->refname = $1.name;
pgsql-hackers by date: