ports/152672:
Anton Yuzhaninov
citrin at citrin.ru
Mon Nov 29 14:10:13 UTC 2010
>Number: 152672
>Category: ports
>Synopsis:
>Confidential: yes
>Severity: serious
>Priority: low
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Mon Nov 29 14:10:12 UTC 2010
>Closed-Date:
>Last-Modified:
>Originator:
>Release: FreeBSD 7.2-STABLE-20090615 amd64 Environment: Description:
>Organization:
>Environment:
>Description:
Originator: Anton Yuzhaninov
Organization: Openstat.ru
Confidential: no
Synopsis: [PATCH] net-im/mu-conference: segafult fix and fixes from svn
Severity: non-critical
mu-conference currently is not in active development and it is unlikely that
new release will be in near futuer. And it will be useful to have some bugfixes
in the ports tree.
files/patch-from-svn includes this buxfixes from project svn:
http://svn.gna.org/viewcvs/mu-conference?view=rev&revision=69
http://svn.gna.org/viewcvs/mu-conference?view=rev&revision=73
files/patch-bug-16239 is my patch for this bug:
http://gna.org/bugs/?16239
and related problems in log writing (some of bugs also cause segfault).
While here deprecated MD5 removed from distinfo
Port maintainer (mm at FreeBSD.org) is cc'd.
Generated with FreeBSD Port Tools 0.99
>How-To-Repeat:
>Fix:
--- mu-conference-0.8_1.patch begins here ---
diff -ruN --exclude=CVS /usr/ports/net-im/mu-conference/Makefile /usr/home/ayuzhaninov/mu-conference/Makefile
--- /usr/ports/net-im/mu-conference/Makefile 2010-09-11 05:07:39.000000000 +0400
+++ /usr/home/ayuzhaninov/mu-conference/Makefile 2010-11-29 16:46:19.000000000 +0300
@@ -6,6 +6,7 @@
PORTNAME= mu-conference
PORTVERSION= 0.8
+PORTREVISION= 1
CATEGORIES= net-im
MASTER_SITES= http://download.gna.org/mu-conference/
DISTNAME= ${PORTNAME}_${PORTVERSION}
diff -ruN --exclude=CVS /usr/ports/net-im/mu-conference/distinfo /usr/home/ayuzhaninov/mu-conference/distinfo
--- /usr/ports/net-im/mu-conference/distinfo 2009-04-05 05:40:59.000000000 +0400
+++ /usr/home/ayuzhaninov/mu-conference/distinfo 2010-11-29 16:42:31.000000000 +0300
@@ -1,3 +1,2 @@
-MD5 (mu-conference_0.8.tar.gz) = 3e11ae52499a65a577d4c697194fc1ce
SHA256 (mu-conference_0.8.tar.gz) = d9f4399573a83f20c84af55cb56b405c706a943898cb14a5d220d35b89db429b
SIZE (mu-conference_0.8.tar.gz) = 110356
diff -ruN --exclude=CVS /usr/ports/net-im/mu-conference/files/patch-bug-16239 /usr/home/ayuzhaninov/mu-conference/files/patch-bug-16239
--- /usr/ports/net-im/mu-conference/files/patch-bug-16239 1970-01-01 03:00:00.000000000 +0300
+++ /usr/home/ayuzhaninov/mu-conference/files/patch-bug-16239 2010-11-29 16:39:41.000000000 +0300
@@ -0,0 +1,152 @@
+--- src/jcomp/jcr_main_stream_error.c.orig 2010-11-25 19:20:57.000000000 +0300
++++ src/jcomp/jcr_main_stream_error.c 2010-11-25 19:22:05.000000000 +0300
+@@ -60,7 +60,6 @@ void jcr_main_close_stream(void) {
+ g_source_remove(jcr->gmain_watch_source);
+ g_io_channel_shutdown(jcr->gio, TRUE, NULL);
+ g_io_channel_unref(jcr->gio);
+- g_io_channel_unref(jcr->gio);
+ close(jcr->fd);
+
+
+--- src/jcomp/jcr_deliver.c.orig 2010-11-26 16:16:52.000000000 +0300
++++ src/jcomp/jcr_deliver.c 2010-11-26 16:21:34.000000000 +0300
+@@ -33,7 +33,7 @@ void deliver(dpacket d, void *a) {
+ sleep(1);
+ }
+
+- log_debug(JDBG, "queued %d bytes : >>> %s <<<", strlen(xmlnode2str(d->x)), xmlnode2str(d->x));
++ log_debug(JDBG, "queued %lu bytes : >>> %s <<<", strlen(xmlnode2str(d->x)), xmlnode2str(d->x));
+ g_async_queue_push(jcr->dqueue, d);
+ }
+
+@@ -90,7 +90,7 @@ void jcr_queue_deliver(void *a) {
+ log_warn(JDBG, "Send packet failed, dropping packet");
+ }
+
+- log_debug(JDBG, "wrote %d packets of %d bytes", pkts, bytes);
++ log_debug(JDBG, "wrote %d packets of %lu bytes", pkts, bytes);
+ // fprintf(stderr, "wrote %d packets of %d bytes\n", pkts, bytes);
+ if (left==0){
+ //queue is empty, flushing the socket
+@@ -99,7 +99,7 @@ void jcr_queue_deliver(void *a) {
+ }
+ }
+ log_warn(JDBG, "packet delivery thread exiting.");
+- log_warn(JDBG, " Last DvryQ Buffer='%.*s'", buffer->len, buffer->str);
++ log_warn(JDBG, " Last DvryQ Buffer='%.*s'", (int)buffer->len, buffer->str);
+ g_string_free(buffer, TRUE);
+ }
+
+--- src/jcomp/jcr_log.c.orig 2010-11-26 14:40:12.000000000 +0300
++++ src/jcomp/jcr_log.c 2010-11-26 14:41:46.000000000 +0300
+@@ -79,8 +79,8 @@ void log_alert(char *zone, const char *f
+ g_static_mutex_lock(&_jcr_log_lock);
+ va_start(ap, fmt);
+ vsnprintf(logmsg, 512, fmt, ap);
+- g_log(G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL, "%s: %s", zone, logmsg);
+ va_end(ap);
++ g_log(G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL, "%s: %s", zone, logmsg);
+ g_static_mutex_unlock(&_jcr_log_lock);
+ }
+
+@@ -92,8 +92,8 @@ void log_error(char *zone, const char *f
+ g_static_mutex_lock(&_jcr_log_lock);
+ va_start(ap, fmt);
+ vsnprintf(logmsg, 512, fmt, ap);
+- g_log(G_LOG_DOMAIN, G_LOG_LEVEL_ERROR, "%s: %s", zone, logmsg);
+ va_end(ap);
++ g_log(G_LOG_DOMAIN, G_LOG_LEVEL_ERROR, "%s: %s", zone, logmsg);
+ g_static_mutex_unlock(&_jcr_log_lock);
+ }
+
+@@ -105,8 +105,8 @@ void log_notice(char *zone, const char *
+ g_static_mutex_lock(&_jcr_log_lock);
+ va_start(ap, fmt);
+ vsnprintf(logmsg, 512, fmt, ap);
+- g_log(G_LOG_DOMAIN, G_LOG_LEVEL_MESSAGE, "%s: %s", zone, logmsg);
+ va_end(ap);
++ g_log(G_LOG_DOMAIN, G_LOG_LEVEL_MESSAGE, "%s: %s", zone, logmsg);
+ g_static_mutex_unlock(&_jcr_log_lock);
+ }
+
+@@ -118,8 +118,8 @@ void log_warn(char *zone, const char *fm
+ g_static_mutex_lock(&_jcr_log_lock);
+ va_start(ap, fmt);
+ vsnprintf(logmsg, 512, fmt, ap);
+- g_log(G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, "%s: %s", zone, logmsg);
+ va_end(ap);
++ g_log(G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, "%s: %s", zone, logmsg);
+ g_static_mutex_unlock(&_jcr_log_lock);
+ }
+
+@@ -131,7 +131,7 @@ void log_debug(char *zone, const char *f
+ g_static_mutex_lock(&_jcr_log_lock);
+ va_start(ap, fmt);
+ vsnprintf(logmsg, 512, fmt, ap);
+- g_log(G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "%s: %s", zone, logmsg);
+ va_end(ap);
++ g_log(G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "%s: %s", zone, logmsg);
+ g_static_mutex_unlock(&_jcr_log_lock);
+ }
+--- src/jcomp/jcr_elements.c.orig 2007-11-10 13:37:38.000000000 +0300
++++ src/jcomp/jcr_elements.c 2010-11-26 16:25:23.000000000 +0300
+@@ -172,7 +172,7 @@ gboolean jcr_read_data(GIOChannel *src,
+ if (rc != G_IO_STATUS_NORMAL) {
+ if (gerr != NULL) {
+ log_warn(JDBG, "Main Channel Error: rc=%d, %d '%s' '%s'", rc,
+- gerr->code, gerr->domain, gerr->message);
++ gerr->code, g_quark_to_string(gerr->domain), gerr->message);
+ g_error_free(gerr);
+ } else {
+ log_warn(JDBG, "Main Channel Error: rc=%d", rc);
+@@ -186,7 +186,7 @@ gboolean jcr_read_data(GIOChannel *src,
+
+ if (XML_Parse(jcr->parser, jcr->recv_buffer, bytes_read, 0) == 0) {
+ log_warn(JDBG, "XML Parsing Error: '%s'", (char *)XML_ErrorString(XML_GetErrorCode(jcr->parser)));
+- log_warn(JDBG, " Last Rcvd Buffer='%.*s'", bytes_read, jcr->recv_buffer);
++ log_warn(JDBG, " Last Rcvd Buffer='%.*s'", (int)bytes_read, jcr->recv_buffer);
+ jcr_main_close_stream();
+ return FALSE;
+ }
+--- ./src/jcomp/jcr_base_connect.c.orig 2010-11-26 16:40:01.000000000 +0300
++++ ./src/jcomp/jcr_base_connect.c 2010-11-26 16:40:15.000000000 +0300
+@@ -84,7 +84,7 @@ void jcr_send_start_stream(void) {
+ if (rc != G_IO_STATUS_NORMAL) {
+ log_warn(JDBG, "Opening XML stream failed, rc=%d", rc);
+ } else {
+- log_debug(JDBG, "Opening XML stream: sent %d bytes", bytes);
++ log_debug(JDBG, "Opening XML stream: sent %lu bytes", bytes);
+ }
+
+ }
+--- ./src/conference.c.orig 2010-11-26 16:41:33.000000000 +0300
++++ ./src/conference.c 2010-11-26 16:42:53.000000000 +0300
+@@ -1079,7 +1079,7 @@ void conference(instance i, xmlnode x)
+ tp = pool_new();
+
+ /* Allocate space for cni struct and link to instance */
+- log_debug(NAME, "[%s] Malloc: _cni=%d", FZONE, sizeof(_cni));
++ log_debug(NAME, "[%s] Malloc: _cni=%lu", FZONE, sizeof(_cni));
+ master = pmalloco(i->p, sizeof(_cni));
+
+ master->i = i;
+--- ./src/conference_room.c.orig 2010-11-26 16:44:18.000000000 +0300
++++ ./src/conference_room.c 2010-11-26 16:44:37.000000000 +0300
+@@ -1426,7 +1426,7 @@ cnr con_room_new(cni master, jid roomid,
+ /* Create pool for room struct */
+ p = pool_new();
+ room = pmalloco(p, sizeof(_cnr));
+- log_debug(NAME, "[%s] Malloc: _cnr = %d", FZONE, sizeof(_cnr));
++ log_debug(NAME, "[%s] Malloc: _cnr = %lu", FZONE, sizeof(_cnr));
+ room->p = p;
+ room->master = master;
+
+@@ -1448,7 +1448,7 @@ cnr con_room_new(cni master, jid roomid,
+
+ /* Initialise room history */
+ room->history = pmalloco(p, sizeof(_cnh) * master->history); /* make array of xmlnodes */
+- log_debug(NAME, "[%s] Malloc: history = %d", FZONE, sizeof(_cnh) * master->history);
++ log_debug(NAME, "[%s] Malloc: history = %lu", FZONE, sizeof(_cnh) * master->history);
+
+ /* Room time */
+ room->start = now;
diff -ruN --exclude=CVS /usr/ports/net-im/mu-conference/files/patch-from-svn /usr/home/ayuzhaninov/mu-conference/files/patch-from-svn
--- /usr/ports/net-im/mu-conference/files/patch-from-svn 1970-01-01 03:00:00.000000000 +0300
+++ /usr/home/ayuzhaninov/mu-conference/files/patch-from-svn 2010-11-29 16:37:48.000000000 +0300
@@ -0,0 +1,29 @@
+Index: src/conference_room.c
+===================================================================
+--- src/conference_room.c (revision 68)
++++ src/conference_room.c (revision 69)
+@@ -1018,7 +1018,7 @@ void con_room_process(cnr room, cnu from
+
+ if( nick == NULL)
+ {
+- log_debug(NAME, "[%s] No receipient, returning error", FZONE);
++ log_debug(NAME, "[%s] No recipient, returning error", FZONE);
+
+ jutil_error(jp->x,TERROR_BAD);
+ deliver(dpacket_new(jp->x),NULL);
+@@ -1031,6 +1031,15 @@ void con_room_process(cnr room, cnu from
+ {
+ id = jid_new(xmlnode_pool(item), nick);
+
++ if (id == NULL)
++ {
++ log_debug(NAME, "[%s] Bad recipient, returning error", FZONE);
++ jutil_error(jp->x,TERROR_BAD);
++ deliver(dpacket_new(jp->x),NULL);
++
++ xmlnode_free(item);
++ return;
++ }
+ key = j_strdup(jid_full(jid_user(jid_fix(id))));
+ g_hash_table_insert(room->member, key, (void*)item);
+ }
--- mu-conference-0.8_1.patch ends here ---
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list