List Info

Thread: Segmentation fault in dbmail-users and dbmail-util




Segmentation fault in dbmail-users and dbmail-util
country flaguser name
Germany
2007-08-07 04:43:17
Hi,
I want to have one symbolic name delivering mails to more
than one user.
I'm not willing to set an alias to each individual
recipient. Instead it
seams to be easier to have only one 
dbmail-users -x thegroupexample.com -t memberAexample.com,memberBexample.com ... 
and manage the membership at this forward adress. But in my
tests I got
Segmentation fault both in 
'dbmail-users -l' and 'dbmail-util -ay' (witch runs from
cron)

Hase anyone maybe got a hint, where did I go wrong?

(I built a debian package from the download version
dbmail-2.2.6-rc1
just as dpkg-buildpackage both on a 32 and a 64 bit
debian/etch platform
an got no build-errors.)

I'm doing this simple test:

$ zcat
/usr/share/doc/dbmail/examples/create_tables.sqlite.gz |
sqlite3
mail.db
$ dbmail-users -a user1 -s user1example.com
Adding INBOX for new user... ok.
[user1example.com]
Done
user1:4:0:
0.00:0.00:user1example.com
$ dbmail-users -a user2 -s user2example.com
Adding INBOX for new user... ok.
[user2example.com]
Done
user2:5:0:
0.00:0.00:user2example.com
$ dbmail-users -x bothexample.com -t
user1example.com,user2example.com
[user1example.com]
[user2example.com]
Done
$ dbmail-users -l
-- users --
__!internal_delivery_user!__:1:0:
0.00:0.00:
__public__:3:0:
0.00:0.00:
anyone:2:0:
0.00:0.00:
user1:4:0:
0.00:0.00:user1example.com
user2:5:0:
0.00:0.00:user2example.com

-- forwards --
Segmentation fault


With 
TRACE_STDERR          = 5

Its looks like
...snipp...
user2:5:0:
0.00:0.00:user2example.com

-- forwards --
Aug 05 22:34:47 garkin.softeyes. dbmail-users[26667]:
Debug:[sql]
dbsqlite.c,db_query(+340): SELECT alias FROM dbmail_aliases
ORDER BY
alias
Aug 05 22:34:47 garkin.softeyes. dbmail-users[26667]:
Debug:[db]
dbmodule.c,db_query(+145): last query took [0] seconds
Aug 05 22:34:47 garkin.softeyes. dbmail-users[26667]:
Debug:[auth]
authsql.c,auth_check_user_ext(+222): checking user [bothexample.com] in
alias table
Aug 05 22:34:47 garkin.softeyes. dbmail-users[26667]:
Debug:[auth]
authsql.c,auth_check_user_ext(+239): checks [0]
Aug 05 22:34:47 garkin.softeyes. dbmail-users[26667]:
Debug:[sql]
dbsqlite.c,db_query(+340): SELECT deliver_to FROM
dbmail_aliases WHERE
lower(alias) = lower('bothexample.com') AND
lower(alias) <>
lower(deliver_to)
Aug 05 22:34:47 garkin.softeyes. dbmail-users[26667]:
Debug:[db]
dbmodule.c,db_query(+145): last query took [0] seconds
Aug 05 22:34:47 garkin.softeyes. dbmail-users[26667]:
Debug:[auth]
authsql.c,auth_check_user_ext(+273): into checking loop
Aug 05 22:34:47 garkin.softeyes. dbmail-users[26667]:
Debug:[auth]
authsql.c,auth_check_user_ext(+279): checking user bothexample.com to
user1example.com
Aug 05 22:34:47 garkin.softeyes. dbmail-users[26667]:
Debug:[auth]
authsql.c,auth_check_user_ext(+222): checking user
[user1example.com]
in alias table
Aug 05 22:34:47 garkin.softeyes. dbmail-users[26667]:
Debug:[auth]
authsql.c,auth_check_user_ext(+239): checks [1]
Aug 05 22:34:47 garkin.softeyes. dbmail-users[26667]:
Debug:[sql]
dbsqlite.c,db_query(+340): SELECT deliver_to FROM
dbmail_aliases WHERE
lower(alias) = lower('user1example.com') AND
lower(alias) <>
lower(deliver_to)
Aug 05 22:34:47 garkin.softeyes. dbmail-users[26667]:
Debug:[db]
dbmodule.c,db_query(+145): last query took [0] seconds
Aug 05 22:34:47 garkin.softeyes. dbmail-users[26667]:
Debug:[auth]
authsql.c,auth_check_user_ext(+273): into checking loop
Aug 05 22:34:47 garkin.softeyes. dbmail-users[26667]:
Debug:[auth]
authsql.c,auth_check_user_ext(+279): checking user user1example.com to
4
Aug 05 22:34:47 garkin.softeyes. dbmail-users[26667]:
Debug:[auth]
authsql.c,auth_check_user_ext(+222): checking user [4] in
alias table
Aug 05 22:34:47 garkin.softeyes. dbmail-users[26667]:
Debug:[auth]
authsql.c,auth_check_user_ext(+239): checks [2]
Aug 05 22:34:47 garkin.softeyes. dbmail-users[26667]:
Debug:[sql]
dbsqlite.c,db_query(+340): SELECT deliver_to FROM
dbmail_aliases WHERE
lower(alias) = lower('4') AND lower(alias) <>
lower(deliver_to)
Aug 05 22:34:47 garkin.softeyes. dbmail-users[26667]:
Debug:[db]
dbmodule.c,db_query(+145): last query took [0] seconds
Aug 05 22:34:47 garkin.softeyes. dbmail-users[26667]:
Debug:[auth]
authsql.c,auth_check_user_ext(+261): adding [4] to
deliver_to address
Aug 05 22:34:47 garkin.softeyes. dbmail-users[26667]:
Debug:[auth]
authsql.c,auth_check_user_ext(+279): checking user bothexample.com to
(null)
Aug 05 22:34:47 garkin.softeyes. dbmail-users[26667]:
Debug:[auth]
authsql.c,auth_check_user_ext(+222): checking user [(null)]
in alias
table
Segmentation fault

so it seams auth_check_user_ext is forgotting user2


-- 
Peter Hochgemuth <Peter.Hochgemuthpobox.com>

_______________________________________________
DBmail mailing list
DBmaildbmail.org
htt
ps://mailman.fastxs.nl/mailman/listinfo/dbmail

Re: Segmentation fault in dbmail-users and dbmail-util
user name
2007-08-07 12:33:26
If you're not willing to set an alias to each recipient,
then you're not 
going to get what you want from DBmail. That is how it
handles delivey 
lists.
_______________________________________________
DBmail mailing list
DBmaildbmail.org
htt
ps://mailman.fastxs.nl/mailman/listinfo/dbmail

Re: Segmentation fault in dbmail-users and dbmail-util
country flaguser name
Germany
2007-08-07 15:03:06
Ok, forget about my intention. The problem is worse:

$ dbmail-users -x Aexample.org -t o1example.org,o2example.org
$ dbmail-users -l
-- users --
__!internal_delivery_user!__:1:0:
0.00:0.00:
__public__:3:0:
0.00:0.00:
anyone:2:0:
0.00:0.00:

-- forwards --
Segmentation fault

Where comes this Segmentation fault from?

Am Dienstag, den 07.08.2007, 10:33 -0700 schrieb Blake
Mitchell:
> If you're not willing to set an alias to each
recipient, then you're not 
> going to get what you want from DBmail. That is how it
handles delivey 
> lists.


_______________________________________________
DBmail mailing list
DBmaildbmail.org
htt
ps://mailman.fastxs.nl/mailman/listinfo/dbmail

Re: Segmentation fault in dbmail-users and dbmail-util
country flaguser name
United States
2007-08-08 02:03:26
I rewrote auth_check_user_ext a little bit. I'll try to find
time to put
the code through some testing this week and check it into
SVN.

Aaron

On Tue, 2007-08-07 at 11:43 +0200, Peter Hochgemuth wrote:
> Hi,
> I want to have one symbolic name delivering mails to
more than one user.
> I'm not willing to set an alias to each individual
recipient. Instead it
> seams to be easier to have only one 
> dbmail-users -x thegroupexample.com -t memberAexample.com,memberBexample.com ... 
> and manage the membership at this forward adress. But
in my tests I got
> Segmentation fault both in 
> 'dbmail-users -l' and 'dbmail-util -ay' (witch runs
from cron)
> 
> Hase anyone maybe got a hint, where did I go wrong?
> 
> (I built a debian package from the download version
dbmail-2.2.6-rc1
> just as dpkg-buildpackage both on a 32 and a 64 bit
debian/etch platform
> an got no build-errors.)
> 
> I'm doing this simple test:
> 
> $ zcat
/usr/share/doc/dbmail/examples/create_tables.sqlite.gz |
sqlite3
> mail.db
> $ dbmail-users -a user1 -s user1example.com
> Adding INBOX for new user... ok.
> [user1example.com]
> Done
> user1:4:0:
0.00:0.00:user1example.com
> $ dbmail-users -a user2 -s user2example.com
> Adding INBOX for new user... ok.
> [user2example.com]
> Done
> user2:5:0:
0.00:0.00:user2example.com
> $ dbmail-users -x bothexample.com -t
> user1example.com,user2example.com
> [user1example.com]
> [user2example.com]
> Done
> $ dbmail-users -l
> -- users --
> __!internal_delivery_user!__:1:0:
0.00:0.00:
> __public__:3:0:
0.00:0.00:
> anyone:2:0:
0.00:0.00:
> user1:4:0:
0.00:0.00:user1example.com
> user2:5:0:
0.00:0.00:user2example.com
> 
> -- forwards --
> Segmentation fault
> 
> 
> With 
> TRACE_STDERR          = 5
> 
> Its looks like
> ...snipp...
> user2:5:0:
0.00:0.00:user2example.com
> 
> -- forwards --
> Aug 05 22:34:47 garkin.softeyes. dbmail-users[26667]:
Debug:[sql]
> dbsqlite.c,db_query(+340): SELECT alias FROM
dbmail_aliases ORDER BY
> alias
> Aug 05 22:34:47 garkin.softeyes. dbmail-users[26667]:
Debug:[db]
> dbmodule.c,db_query(+145): last query took [0] seconds
> Aug 05 22:34:47 garkin.softeyes. dbmail-users[26667]:
Debug:[auth]
> authsql.c,auth_check_user_ext(+222): checking user
[bothexample.com] in
> alias table
> Aug 05 22:34:47 garkin.softeyes. dbmail-users[26667]:
Debug:[auth]
> authsql.c,auth_check_user_ext(+239): checks [0]
> Aug 05 22:34:47 garkin.softeyes. dbmail-users[26667]:
Debug:[sql]
> dbsqlite.c,db_query(+340): SELECT deliver_to FROM
dbmail_aliases WHERE
> lower(alias) = lower('bothexample.com') AND
lower(alias) <>
> lower(deliver_to)
> Aug 05 22:34:47 garkin.softeyes. dbmail-users[26667]:
Debug:[db]
> dbmodule.c,db_query(+145): last query took [0] seconds
> Aug 05 22:34:47 garkin.softeyes. dbmail-users[26667]:
Debug:[auth]
> authsql.c,auth_check_user_ext(+273): into checking
loop
> Aug 05 22:34:47 garkin.softeyes. dbmail-users[26667]:
Debug:[auth]
> authsql.c,auth_check_user_ext(+279): checking user
bothexample.com to
> user1example.com
> Aug 05 22:34:47 garkin.softeyes. dbmail-users[26667]:
Debug:[auth]
> authsql.c,auth_check_user_ext(+222): checking user
[user1example.com]
> in alias table
> Aug 05 22:34:47 garkin.softeyes. dbmail-users[26667]:
Debug:[auth]
> authsql.c,auth_check_user_ext(+239): checks [1]
> Aug 05 22:34:47 garkin.softeyes. dbmail-users[26667]:
Debug:[sql]
> dbsqlite.c,db_query(+340): SELECT deliver_to FROM
dbmail_aliases WHERE
> lower(alias) = lower('user1example.com') AND
lower(alias) <>
> lower(deliver_to)
> Aug 05 22:34:47 garkin.softeyes. dbmail-users[26667]:
Debug:[db]
> dbmodule.c,db_query(+145): last query took [0] seconds
> Aug 05 22:34:47 garkin.softeyes. dbmail-users[26667]:
Debug:[auth]
> authsql.c,auth_check_user_ext(+273): into checking
loop
> Aug 05 22:34:47 garkin.softeyes. dbmail-users[26667]:
Debug:[auth]
> authsql.c,auth_check_user_ext(+279): checking user
user1example.com to
> 4
> Aug 05 22:34:47 garkin.softeyes. dbmail-users[26667]:
Debug:[auth]
> authsql.c,auth_check_user_ext(+222): checking user [4]
in alias table
> Aug 05 22:34:47 garkin.softeyes. dbmail-users[26667]:
Debug:[auth]
> authsql.c,auth_check_user_ext(+239): checks [2]
> Aug 05 22:34:47 garkin.softeyes. dbmail-users[26667]:
Debug:[sql]
> dbsqlite.c,db_query(+340): SELECT deliver_to FROM
dbmail_aliases WHERE
> lower(alias) = lower('4') AND lower(alias) <>
lower(deliver_to)
> Aug 05 22:34:47 garkin.softeyes. dbmail-users[26667]:
Debug:[db]
> dbmodule.c,db_query(+145): last query took [0] seconds
> Aug 05 22:34:47 garkin.softeyes. dbmail-users[26667]:
Debug:[auth]
> authsql.c,auth_check_user_ext(+261): adding [4] to
deliver_to address
> Aug 05 22:34:47 garkin.softeyes. dbmail-users[26667]:
Debug:[auth]
> authsql.c,auth_check_user_ext(+279): checking user
bothexample.com to
> (null)
> Aug 05 22:34:47 garkin.softeyes. dbmail-users[26667]:
Debug:[auth]
> authsql.c,auth_check_user_ext(+222): checking user
[(null)] in alias
> table
> Segmentation fault
> 
> so it seams auth_check_user_ext is forgotting user2
> 
> 

_______________________________________________
DBmail mailing list
DBmaildbmail.org
htt
ps://mailman.fastxs.nl/mailman/listinfo/dbmail

Re: Segmentation fault in dbmail-users and dbmail-util
country flaguser name
Germany
2007-08-09 04:27:40
Hi,

I found the bug in the sqlite implementation of
db_set_result_set() and
fixed it. Maybe somebody can check this in into SVN.
The patch is

#! /bin/sh /usr/share/dpatch/dpatch-run
## 04_dbsqlite.dpatch by  <Peter.Hochgemuth at
pobox.com>
##
## All lines beginning with `## DP:' are a description of
the patch.
## DP:
## DP: [segfault in auth_check_user_ext() using sqlite]
after:  
## DP: saveres = db_get_result_set();
## DP: db_set_result_set(NULL);
## DP: ...
## DP: db_set_result_set(saveres);
## DP: the call to db_free_result() in db_set_result_set()
cleared out
the values referenced by db_get_result_set()
## DP:
## DP: remove memory leaks in db_free_result()
## DP: don't reuse lastq in db_query() since we dont know if
the value
is referenced by a db_get_result_set()

DPATCH
diff -urNad dbmail-2.2.6-rc1.orig/modules/dbsqlite.c
dbmail-2.2.6-rc1/modules/dbsqlite.c
--- dbmail-2.2.6-rc1.orig/modules/dbsqlite.c	2007-07-14
11:56:54.000000000 +0200
+++ dbmail-2.2.6-rc1/modules/dbsqlite.c	2007-08-09
09:27:38.000000000
+0200
 -289,8
+289,7 
 {
 	if (lastq) {
 		if (lastq->resp) sqlite3_free_table(lastq->resp);
-		lastq->resp = 0;
-		lastq->rows = lastq->cols = 0;
+		free(lastq);
 	}
 	lastq = 0;
 
 -328,14
+327,11 
 	char *errmsg;
 	int res, retry=0;
 
-	if (lastq) {
-		if (lastq->resp) sqlite3_free_table(lastq->resp);
-	} else {
-		lastq = (struct qtmp *)malloc(sizeof(struct qtmp));
-		if (!lastq) {
-			TRACE(TRACE_ERROR, "malloc failed: %s",
strerror(errno));
-			return -1;
-		}
+	db_free_result();
+	lastq = (struct qtmp *)malloc(sizeof(struct qtmp));
+	if (!lastq) {
+		TRACE(TRACE_ERROR, "malloc failed: %s",
strerror(errno));
+		return -1;
 	}
 	TRACE(TRACE_DEBUG,"%s", the_query);
 
 -355,6
+351,7 
 
 		TRACE(TRACE_ERROR, "sqlite3_get_table failed:
%s", errmsg);
 		sqlite3_free(errmsg);
+		db_free_result();
 		return -1;
 	}
 
 -414,6
+411,5 
 
 void db_set_result_set(void *the_result_set)
 {
-	db_free_result();
 	lastq = (struct qtmp *)the_result_set;
 }


Am Mittwoch, den 08.08.2007, 00:03 -0700 schrieb Aaron
Stone:
> I rewrote auth_check_user_ext a little bit. I'll try to
find time to put
> the code through some testing this week and check it
into SVN.
> 
> Aaron
> 

-- 
softeyes.net - Softeyes GmbH - Pf. 100318 - 01073 Dresden
Geschaeftsfuehrer Joerg Wittenberger; AG Dresden HR B23075


_______________________________________________
DBmail mailing list
DBmaildbmail.org
htt
ps://mailman.fastxs.nl/mailman/listinfo/dbmail

  
[1-5]

about | contact  Other archives ( Real Estate discussion Medical topics )