Created
April 20, 2015 17:26
-
-
Save ionutrazvanionita/5f09ec2d96ddc60f6695 to your computer and use it in GitHub Desktop.
sqlite db_sqlite_str2val patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/modules/db_sqlite/val.c b/modules/db_sqlite/val.c | |
index 017d79f..491fcb0 100644 | |
--- a/modules/db_sqlite/val.c | |
+++ b/modules/db_sqlite/val.c | |
@@ -145,6 +145,7 @@ int db_sqlite_str2val(const db_type_t _t, db_val_t* _v, const char* _s, const in | |
int db_sqlite_val2str(const db_con_t* _c, const db_val_t* _v, char* _s, int* _len) | |
{ | |
int l; | |
+ char *old_s; | |
if (!_c || !_v || !_s || !_len || !*_len) { | |
LM_ERR("invalid parameter value\n"); | |
@@ -199,7 +200,6 @@ int db_sqlite_val2str(const db_con_t* _c, const db_val_t* _v, char* _s, int* _le | |
break; | |
case DB_STRING: | |
- /* TODO check escpaing */ | |
l = strlen(VAL_STRING(_v)); | |
if (*_len < l ) | |
{ LM_ERR("Destination buffer too short for string\n"); | |
@@ -207,17 +207,19 @@ int db_sqlite_val2str(const db_con_t* _c, const db_val_t* _v, char* _s, int* _le | |
} | |
else | |
{ | |
- LM_DBG("Converted string to string\n"); | |
- _s[0] = '\''; | |
- strncpy(_s+1, VAL_STRING(_v) , l); | |
- _s[l+1] = '\''; | |
- *_len = l+2; | |
+ old_s = _s; | |
+ *_s++ = '\''; | |
+ strncpy(_s, VAL_STRING(_v) , l); | |
+ _s += l; | |
+ *_s++ = '\''; | |
+ *_s = '\0'; | |
+ *_len = _s - old_s; | |
+ | |
return 0; | |
} | |
break; | |
case DB_STR: | |
- /* TODO check escpaing */ | |
l = VAL_STR(_v).len; | |
if (*_len < l) | |
{ | |
@@ -226,11 +228,14 @@ int db_sqlite_val2str(const db_con_t* _c, const db_val_t* _v, char* _s, int* _le | |
} | |
else | |
{ | |
- LM_DBG("Converted str to string\n"); | |
- _s[0] = '\''; | |
- strncpy(_s+1, VAL_STR(_v).s , l); | |
- _s[l+1] = '\''; | |
- *_len = l+2; | |
+ old_s = _s; | |
+ *_s++ = '\''; | |
+ strncpy(_s, VAL_STR(_v).s , VAL_STR(_v).len); | |
+ _s += VAL_STR(_v).len; | |
+ *_s++ = '\''; | |
+ *_s = '\0'; | |
+ *_len = _s - old_s; | |
+ | |
return 0; | |
} | |
break; | |
@@ -258,11 +263,14 @@ int db_sqlite_val2str(const db_con_t* _c, const db_val_t* _v, char* _s, int* _le | |
} | |
else | |
{ | |
- _s[0] = '\''; | |
- strncpy(_s+1, VAL_BLOB(_v).s , l); | |
- _s[l+1] = '\''; | |
- LM_DBG("Converting BLOB [%.*s]\n", l,_s); | |
- *_len = l+2; | |
+ old_s = _s; | |
+ *_s++ = '\''; | |
+ strncpy(_s, VAL_BLOB(_v).s , VAL_BLOB(_v).len); | |
+ _s += VAL_BLOB(_v).len; | |
+ *_s++ = '\''; | |
+ *_s = '\0'; | |
+ *_len = _s - old_s; | |
+ | |
return 0; | |
} | |
break; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment