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