summaryrefslogtreecommitdiff
blob: 7036cd68ca3452e0908e67968c24ed7f58205255 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
From afbb33cf9ff750e93a9a4c1f51a3b62d584f056e Mon Sep 17 00:00:00 2001
From: Sergey Poznyakoff <gray@gnu.org>
Date: Sun, 19 Mar 2017 17:31:08 +0200
Subject: Fix a bug in field-map handling.

* libmailutils/cfg/driver.c (parse_mapping): Fix expected value type.
* libmu_auth/sql.c (get_field): Remove left-over mu_assoc_ref call
(see 622bc770).
---
 NEWS                      |  2 +-
 libmailutils/cfg/driver.c |  7 ++++++-
 libmu_auth/sql.c          | 11 +++++++----
 3 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/libmailutils/cfg/driver.c b/libmailutils/cfg/driver.c
index 7da75a8..8af543d 100644
--- a/libmailutils/cfg/driver.c
+++ b/libmailutils/cfg/driver.c
@@ -617,10 +617,15 @@ static int
 parse_mapping (void *item, void *data)
 {
   struct mapping_closure *clos = data;
-  char *str = item;
+  struct mu_config_value *cval = item;
+  char const *str;
   size_t len;
   char *key, *val;
   int rc;
+
+  if (mu_cfg_assert_value_type (cval, MU_CFG_STRING))
+    return 1;
+  str = cval->v.string;
   
   len = strcspn (str, "=");
   if (str[len] == 0)
diff --git a/libmu_auth/sql.c b/libmu_auth/sql.c
index d69c36c..c50598d 100644
--- a/libmu_auth/sql.c
+++ b/libmu_auth/sql.c
@@ -214,20 +214,23 @@ mu_sql_expand_query (const char *query, const char *ustr)
 static int
 get_field (mu_sql_connection_t conn, const char *id, char **ret, int mandatory)
 {
-  const char **name = mu_assoc_ref (mu_sql_module_config.field_map, id);
-  int rc = mu_sql_get_field (conn, 0, name ? *name : id, ret);
+  int rc;
+  const char *name = mu_assoc_get (mu_sql_module_config.field_map, id);
+  if (!name)
+    name = id;
+  rc = mu_sql_get_field (conn, 0, name, ret);
   if (rc)
     {
       if (mandatory || rc != MU_ERR_NOENT)
 	mu_error (_("cannot get SQL field `%s' (`%s'): %s"),
-		  id, name ? *name : id, mu_strerror (rc));
+		  id, name, mu_strerror (rc));
     }
   else if (!*ret)
     {
       if (mandatory)
 	{
 	  mu_error (_("SQL field `%s' (`%s') has NULL value"),
-		    id, name ? *name : id);
+		    id, name);
 	  rc = MU_ERR_READ;
 	}
       else
-- 
cgit v1.0-41-gc330