Add exception of calling font and sqlite3 API 16/236616/5
authorJinWang An <jinwang.an@samsung.com>
Fri, 19 Jun 2020 09:40:32 +0000 (18:40 +0900)
committerJinWang An <jinwang.an@samsung.com>
Thu, 25 Jun 2020 14:49:37 +0000 (23:49 +0900)
Change-Id: I1c23202935927176c6620e26600fc8f4714a9cc4
Signed-off-by: JinWang An <jinwang.an@samsung.com>
libutil/sstu.c
tests/mocks/vconf.cpp

index abebf65..7464807 100644 (file)
@@ -73,14 +73,21 @@ static char* _get_main_font_family(char *alias)
 
        /* do matching */
        set = FcFontSort(font_config, pat, FcTrue, NULL, &res);
-       if (set) {
-               if (0 < set->nfont) {
-                       FcPatternGetString(set->fonts[0], FC_FAMILY, 0, &family);
+       do {
+               if (set && 0 < set->nfont) {
+                       int result = FcPatternGetString(set->fonts[0], FC_FAMILY, 0, &family);
+                       if (FcResultMatch != result) {
+                               ERR("FcPatternGetString() Fail(%d)", result);
+                               ret = NULL;
+                               break;
+                       }
                        if (family)
                                ret = strdup((char*)family);
                }
+       } while(0);
+
+       if (set)
                FcFontSetDestroy(set);
-       }
 
        FcPatternDestroy(pat);
        FcConfigDestroy(font_config);
index a8a7cd0..253656a 100644 (file)
@@ -265,6 +265,7 @@ static int _vconf_set_str(const char *in_key, const char *strval)
        int rc;
        char *err_msg = 0;
        char sql[MAX_BUF_LEN + 1];
+       sqlite3_stmt *stmt = NULL;
 
        rc = _sqlite_connect();
        if (rc != SQLITE_OK) {
@@ -336,8 +337,7 @@ static int _vconf_set_str(const char *in_key, const char *strval)
 #endif
 
 #if 1 /* insert key with parameter */
-       {
-               sqlite3_stmt *stmt = NULL;
+       do {
                DBG("key[%s] value[%s]", in_key, strval);
                snprintf(sql, MAX_BUF_LEN, "INSERT OR REPLACE INTO vconf ( layer, key, value ) "
                                "VALUES ( \"%s\", ?, ?);", "system");
@@ -345,26 +345,35 @@ static int _vconf_set_str(const char *in_key, const char *strval)
                rc = sqlite3_prepare(db, sql, strlen(sql), &stmt, 0);
                if (rc != SQLITE_OK) {
                        ERR("sqlite3_prepare() Fail(%s)", sqlite3_errmsg(db));
-                       sqlite3_finalize(stmt);
-                       _sqlite_close();
-                       return VCONF_ERROR;
+                       break;
                }
 
-               sqlite3_bind_text(stmt, 1, in_key, strlen(in_key), SQLITE_STATIC);
-               sqlite3_bind_text(stmt, 2, strval, strlen(strval), SQLITE_STATIC);
+               rc = sqlite3_bind_text(stmt, 1, in_key, strlen(in_key), SQLITE_STATIC);
+               if (rc != SQLITE_OK) {
+                       ERR("sqlite3_bind_text() Fail(%d) : %s", rc, sqlite3_errmsg(db));
+                       break;
+               }
+
+               rc = sqlite3_bind_text(stmt, 2, strval, strlen(strval), SQLITE_STATIC);
+               if (rc != SQLITE_OK) {
+                       ERR("sqlite3_bind_text() Fail(%d) : %s", rc, sqlite3_errmsg(db));
+                       break;
+               }
 
                rc = sqlite3_step(stmt);
                if (rc != SQLITE_DONE) {
                        ERR("sqlite3_step() Fail(%s)", sqlite3_errmsg(db));
-                       sqlite3_finalize(stmt);
-                       _sqlite_close();
-                       return VCONF_ERROR;
+                       break;
                }
-               sqlite3_finalize(stmt);
-       }
+       } while (0);
 #endif
+       sqlite3_finalize(stmt);
        _sqlite_close();
-       return VCONF_OK;
+
+       if (rc == SQLITE_DONE || rc == SQLITE_OK)
+               return VCONF_OK;
+       else
+               return VCONF_ERROR;
 }
 
 API int vconf_set(keylist_t *keylist)
@@ -486,34 +495,36 @@ API char *vconf_get_str(const char *in_key)
                }
        } while (1);
 
-       sqlite3_bind_text(stmt, 1, in_key, strlen(in_key), SQLITE_STATIC);
-       rc = sqlite3_step(stmt);
-       if (rc != SQLITE_ROW) {
-               ERR("sqlite3_step() Fail(%s)", in_key);
-               sqlite3_finalize(stmt);
-               _sqlite_close();
-               return NULL;
-       }
+       do {
+               rc = sqlite3_bind_text(stmt, 1, in_key, strlen(in_key), SQLITE_STATIC);
+               if (rc != SQLITE_OK) {
+                       ERR("sqlite3_bind_text() Fail(%d) : %s", rc, sqlite3_errmsg(db));
+                       break;
+               }
+               rc = sqlite3_step(stmt);
+               if (rc != SQLITE_ROW) {
+                       ERR("sqlite3_step() Fail(%s)", in_key);
+                       break;
+               }
 
-       DBG("vconf get: layer[%s] key[%s], value[%s]",
-                       sqlite3_column_text(stmt, 0),
-                       sqlite3_column_text(stmt, 1),
-                       sqlite3_column_text(stmt, 2));
+               DBG("vconf get: layer[%s] key[%s], value[%s]",
+                               sqlite3_column_text(stmt, 0),
+                               sqlite3_column_text(stmt, 1),
+                               sqlite3_column_text(stmt, 2));
 
-       str = (char*)malloc(MAX_BUF_LEN + 1);
-       if (NULL == str) {
-               ERR("malloc(%d) Fail()", MAX_BUF_LEN + 1);
-               sqlite3_finalize(stmt);
-               _sqlite_close();
-               return NULL;
-       }
+               const unsigned char *sq_str = sqlite3_column_text(stmt, 2);
+               if (NULL == sq_str) {
+                       ERR("sqlite3_column_text() Fail() : %s", sqlite3_errmsg(db));
+                       break;
+               }
+               str = strdup((const char*)sq_str);
 
-       strncpy(str, (char*)sqlite3_column_text(stmt, 2), MAX_BUF_LEN);
+               DBG("vconf get: key[%s], value[%s]", in_key, str);
+       } while (0);
 
        sqlite3_finalize(stmt);
        _sqlite_close();
 
-       DBG("vconf get: key[%s], value[%s]", in_key, str);
        return str;
 }