liquid_feedback_core
changeset 357:d420e7a5a75f
Handle out-of-memory errors in "lf_update" when escaping string literals
author | jbe |
---|---|
date | Sun Mar 17 10:02:49 2013 +0100 (2013-03-17) |
parents | 4698b68e0942 |
children | e22a4d2aea2d |
files | lf_update.c |
line diff
1.1 --- a/lf_update.c Sun Mar 17 09:28:39 2013 +0100 1.2 +++ b/lf_update.c Sun Mar 17 10:02:49 2013 +0100 1.3 @@ -9,6 +9,7 @@ 1.4 char *res; 1.5 size_t res_len; 1.6 res = malloc(2*len+3); 1.7 + if (!res) return NULL; 1.8 res[0] = '\''; 1.9 res_len = PQescapeStringConn(conn, res+1, str, len, NULL); 1.10 res[res_len+1] = '\''; 1.11 @@ -138,6 +139,11 @@ 1.12 int j; 1.13 issue_id = PQgetvalue(res, i, 0); 1.14 escaped_issue_id = escapeLiteral(db, issue_id, strlen(issue_id)); 1.15 + if (!escaped_issue_id) { 1.16 + fprintf(stderr, "Could not escape literal in memory.\n"); 1.17 + err = 1; 1.18 + break; 1.19 + } 1.20 old_res2 = NULL; 1.21 for (j=0; ; j++) { 1.22 if (j >= 20) { // safety to avoid endless loops 1.23 @@ -159,6 +165,12 @@ 1.24 char *persist, *escaped_persist, *cmd; 1.25 persist = PQgetvalue(old_res2, 0, 0); 1.26 escaped_persist = escapeLiteral(db, persist, strlen(persist)); 1.27 + if (!escaped_persist) { 1.28 + fprintf(stderr, "Could not escape literal in memory.\n"); 1.29 + err = 1; 1.30 + PQclear(old_res2); 1.31 + break; 1.32 + } 1.33 if (asprintf(&cmd, "SET TRANSACTION ISOLATION LEVEL REPEATABLE READ; SELECT \"check_issue\"(%s, %s::\"check_issue_persistence\")", escaped_issue_id, escaped_persist) < 0) { 1.34 freemem(escaped_persist); 1.35 fprintf(stderr, "Could not prepare query string in memory.\n");