# HG changeset patch # User jbe # Date 1363510969 -3600 # Node ID d420e7a5a75f6e6620b2ed6a2e500def613c0b58 # Parent 4698b68e0942396ff74b7fd779bd50c101fd0ce8 Handle out-of-memory errors in "lf_update" when escaping string literals diff -r 4698b68e0942 -r d420e7a5a75f lf_update.c --- a/lf_update.c Sun Mar 17 09:28:39 2013 +0100 +++ b/lf_update.c Sun Mar 17 10:02:49 2013 +0100 @@ -9,6 +9,7 @@ char *res; size_t res_len; res = malloc(2*len+3); + if (!res) return NULL; res[0] = '\''; res_len = PQescapeStringConn(conn, res+1, str, len, NULL); res[res_len+1] = '\''; @@ -138,6 +139,11 @@ int j; issue_id = PQgetvalue(res, i, 0); escaped_issue_id = escapeLiteral(db, issue_id, strlen(issue_id)); + if (!escaped_issue_id) { + fprintf(stderr, "Could not escape literal in memory.\n"); + err = 1; + break; + } old_res2 = NULL; for (j=0; ; j++) { if (j >= 20) { // safety to avoid endless loops @@ -159,6 +165,12 @@ char *persist, *escaped_persist, *cmd; persist = PQgetvalue(old_res2, 0, 0); escaped_persist = escapeLiteral(db, persist, strlen(persist)); + if (!escaped_persist) { + fprintf(stderr, "Could not escape literal in memory.\n"); + err = 1; + PQclear(old_res2); + break; + } if (asprintf(&cmd, "SET TRANSACTION ISOLATION LEVEL REPEATABLE READ; SELECT \"check_issue\"(%s, %s::\"check_issue_persistence\")", escaped_issue_id, escaped_persist) < 0) { freemem(escaped_persist); fprintf(stderr, "Could not prepare query string in memory.\n");