OpenPKG CVS Repository http://cvs.openpkg.org/ ____________________________________________________________________________
Server: cvs.openpkg.org Name: Ralf S. Engelschall Root: /v/openpkg/cvs Email: [email protected] Module: openpkg-src Date: 25-Dec-2008 22:02:12 Branch: HEAD Handle: 2008122521021200 Modified files: openpkg-src/sasl sasl.patch Log: fix PostgreSQL binary retrival Summary: Revision Changes Path 1.27 +38 -16 openpkg-src/sasl/sasl.patch ____________________________________________________________________________ patch -p0 <<'@@ .' Index: openpkg-src/sasl/sasl.patch ============================================================================ $ cvs diff -u -r1.26 -r1.27 sasl.patch --- openpkg-src/sasl/sasl.patch 25 Dec 2008 17:59:38 -0000 1.26 +++ openpkg-src/sasl/sasl.patch 25 Dec 2008 21:02:12 -0000 1.27 @@ -223,7 +223,7 @@ Index: plugins/sql.c --- plugins/sql.c.orig 2006-04-07 15:42:16 +0200 -+++ plugins/sql.c 2008-12-25 18:56:32 +0100 ++++ plugins/sql.c 2008-12-25 21:57:47 +0100 @@ -150,9 +150,15 @@ return -1; } @@ -243,6 +243,15 @@ } /* free result */ +@@ -277,7 +283,7 @@ + ExecStatusType status; + + /* run the query */ +- result = PQexec(conn, cmd); ++ result = PQexecParams(conn, cmd, 0, NULL, NULL, NULL, NULL, 1); + + /* check the status */ + status = PQresultStatus(result); @@ -298,6 +304,7 @@ row_count = PQntuples(result); if (!row_count) { @@ -251,24 +260,37 @@ utils->log(NULL, SASL_LOG_NOTE, "sql plugin: no result found"); PQclear(result); return -1; -@@ -310,9 +317,13 @@ +@@ -310,9 +317,26 @@ /* now get the result set value and value_len */ /* we only fetch one because we don't care about the rest */ if (value) { - strncpy(value, PQgetvalue(result,0,0), size-2); - value[size-1] = '\0'; - if (value_len) *value_len = strlen(value); -+ size_t col_len; -+ col_len = (size_t)PQgetlength(result, 0, 0); -+ if (col_len > size - 1); -+ col_len = size - 1; -+ memcpy(value, PQgetvalue(result, 0, 0), col_len); -+ value[col_len] = '\0'; -+ if (value_len) *value_len = col_len; ++ if (PQgetisnull(result, 0, 0)) { ++ size_t col_len; ++ col_len = strlen(SQL_NULL_VALUE); ++ if (col_len > size - 1) ++ col_len = size - 1; ++ memcpy(value, SQL_NULL_VALUE, col_len); ++ value[col_len] = '\0'; ++ if (value_len) ++ *value_len = col_len; ++ } ++ else { ++ size_t col_len; ++ col_len = (size_t)PQgetlength(result, 0, 0); ++ if (col_len > size - 1); ++ col_len = size - 1; ++ memcpy(value, PQgetvalue(result, 0, 0), col_len); ++ value[col_len] = '\0'; ++ if (value_len) ++ *value_len = col_len; ++ } } /* free result */ -@@ -342,7 +353,7 @@ +@@ -342,7 +366,7 @@ #endif /* HAVE_PGSQL */ #ifdef HAVE_SQLITE @@ -277,7 +299,7 @@ static void *_sqlite_open(char *host __attribute__((unused)), char *port __attribute__((unused)), -@@ -352,21 +363,23 @@ +@@ -352,21 +376,23 @@ const char *database, const sasl_utils_t *utils) { int rc; @@ -308,7 +330,7 @@ return NULL; } -@@ -388,62 +401,67 @@ +@@ -388,62 +414,67 @@ return 0; } @@ -417,7 +439,7 @@ return 0; } -@@ -464,7 +482,7 @@ +@@ -464,7 +495,7 @@ static void _sqlite_close(void *db) { @@ -426,7 +448,7 @@ } #endif /* HAVE_SQLITE */ -@@ -771,7 +789,7 @@ +@@ -771,7 +802,7 @@ settings = (sql_settings_t *) glob_context; sparams->utils->log(NULL, SASL_LOG_DEBUG, @@ -435,7 +457,7 @@ user_buf = sparams->utils->malloc(ulen + 1); if (!user_buf) goto done; -@@ -849,7 +867,7 @@ +@@ -849,7 +880,7 @@ } sparams->utils->log(NULL, SASL_LOG_DEBUG, @@ -444,7 +466,7 @@ realname, escap_userid, escap_realm); /* create a statement that we will use */ -@@ -864,9 +882,15 @@ +@@ -864,9 +895,15 @@ /* run the query */ if (!settings->sql_engine->sql_exec(conn, query, value, sizeof(value), &value_len, sparams->utils)) { @@ . ______________________________________________________________________ OpenPKG http://openpkg.org CVS Repository Commit List [email protected]
