]> granicus.if.org Git - postgresql/commitdiff
ecpg: Fix off-by-one error in memory copying
authorPeter Eisentraut <peter_e@gmx.net>
Thu, 8 Mar 2012 20:29:01 +0000 (22:29 +0200)
committerPeter Eisentraut <peter_e@gmx.net>
Sat, 10 Mar 2012 23:03:09 +0000 (01:03 +0200)
In a rare case, one byte past the end of memory belonging to the
sqlca_t structure would be written to.

found by Coverity

src/interfaces/ecpg/ecpglib/misc.c

index 98e0597b03c8bd7d569a3ebf84ccc0629e956413..c29f933ef9c1afbee24ad5cb03e11e89c5002e54 100644 (file)
@@ -530,7 +530,7 @@ ECPGset_var(int number, void *pointer, int lineno)
                struct sqlca_t *sqlca = ECPGget_sqlca();
 
                sqlca->sqlcode = ECPG_OUT_OF_MEMORY;
-               strncpy(sqlca->sqlstate, "YE001", sizeof("YE001"));
+               strncpy(sqlca->sqlstate, "YE001", sizeof(sqlca->sqlstate));
                snprintf(sqlca->sqlerrm.sqlerrmc, sizeof(sqlca->sqlerrm.sqlerrmc), "out of memory on line %d", lineno);
                sqlca->sqlerrm.sqlerrml = strlen(sqlca->sqlerrm.sqlerrmc);
                /* free all memory we have allocated for the user */