Skip to content

Instantly share code, notes, and snippets.

@ionutrazvanionita
Created April 20, 2015 17:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ionutrazvanionita/5f09ec2d96ddc60f6695 to your computer and use it in GitHub Desktop.
Save ionutrazvanionita/5f09ec2d96ddc60f6695 to your computer and use it in GitHub Desktop.
sqlite db_sqlite_str2val patch
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