]> git.sur5r.net Git - bacula/bacula/commitdiff
ebl add sql_escape to catalog messages
authorEric Bollengier <eric@eb.homelinux.org>
Mon, 13 Nov 2006 18:25:59 +0000 (18:25 +0000)
committerEric Bollengier <eric@eb.homelinux.org>
Mon, 13 Nov 2006 18:25:59 +0000 (18:25 +0000)
git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@3615 91ce42f0-d328-0410-95d8-f526ca767f89

bacula/src/dird/dird.c
bacula/src/lib/message.c
bacula/src/lib/message.h

index b8d6491c2d4a5ad9665c6614b7d989bafc46359c..75f91aa78b41d8c4d3f92931f6dd0153a2b2af54 100644 (file)
@@ -218,7 +218,8 @@ int main (int argc, char *argv[])
    my_name_is(0, NULL, director->hdr.name);    /* set user defined name */
 
    /* Plug database interface for library routines */
-   p_sql_query = (sql_query)dir_sql_query;                                   
+   p_sql_query = (sql_query)dir_sql_query;
+   p_sql_escape = (sql_escape)db_escape_string;
 
    FDConnectTimeout = (int)director->FDConnectTimeout;
    SDConnectTimeout = (int)director->SDConnectTimeout;
index 7b411d5b3c6ad0ec914bff2fa33197b57af3be9b..804a417d59774a11896a4ea6e8d6866c9e25f769 100755 (executable)
@@ -27,6 +27,7 @@
 #include "jcr.h"
 
 sql_query p_sql_query = NULL;
+sql_escape p_sql_escape = NULL;
 
 #define FULL_LOCATION 1               /* set for file:line in Debug messages */
 
@@ -617,12 +618,21 @@ void dispatch_message(JCR *jcr, int type, time_t mtime, char *msg)
                 if (!jcr || !jcr->db) {
                    break;
                 }
-                if (p_sql_query) {
-                   POOL_MEM cmd(PM_MESSAGE);
+                if (p_sql_query && p_sql_escape) {
+                   POOLMEM *cmd = get_pool_memory(PM_MESSAGE);
+                   POOLMEM *esc_msg = get_pool_memory(PM_MESSAGE);
+                   
+                   int len = strlen(msg) + 1;
+                   esc_msg = check_pool_memory_size(esc_msg, len*2+1);
+                   p_sql_escape(esc_msg, msg, len);
+
                    bstrftimes(dt, sizeof(dt), mtime);
                    Mmsg(cmd, "INSERT INTO Log (JobId, Time, LogText) VALUES (%s,'%s','%s')",
-                         edit_int64(jcr->JobId, ed1), dt, msg);
-                   p_sql_query(jcr, cmd.c_str());
+                         edit_int64(jcr->JobId, ed1), dt, esc_msg);
+                   p_sql_query(jcr, cmd);
+                   
+                   free_pool_memory(cmd);
+                   free_pool_memory(esc_msg);
                 }
                 break;
              case MD_CONSOLE:
index 66b0f82dd89bfbe8a3617ac525487dcafd4efba2..51d1f36dbd787d327b73c09f56b77e0d772e7074 100644 (file)
@@ -133,7 +133,10 @@ void Qmsg(JCR *jcr, int type, time_t mtime, const char *fmt,...);
 bool get_trace(void);
 
 typedef void (*sql_query)(JCR *jcr, const char *cmd);
+typedef void (*sql_escape)(char *snew, char *old, int len);
+
 extern DLL_IMP_EXP sql_query     p_sql_query;
+extern DLL_IMP_EXP sql_escape    p_sql_escape;
 
 extern DLL_IMP_EXP int           debug_level;
 extern DLL_IMP_EXP int           verbose;