My box has a PCI/PCI bridge. chan_visdn tries to readlink() paths into
100-byte buffers.

That thranslates into strange can't-connect-channels errors and, of
course, the inability to hear anything.

strace:
readlink("/sys/devices/pci0000:00/0000:00:1e.0/0000:04:02.0/0000:05:04.0/0000:06:06.0/st0/B1",
 
"../../../../../../../devices/pci0000:00/0000:00:1e.0/0000:04:02.0/0000:05:04.0/0000:06:06.0/st0/000",
 99) = 99

Fixit:

diff --git a/chan_visdn/chan_visdn.c b/chan_visdn/chan_visdn.c
index 349439a..9c5b592 100644
--- a/chan_visdn/chan_visdn.c
+++ b/chan_visdn/chan_visdn.c
@@ -93,6 +93,9 @@ #include "huntgroup.h"
 #include "overlap.h"
 #include "numbers_list.h"
 
+/* was hardcoded to 100, but that's definitely not enough! */
+#define MAX_SYS_PATH 256
+
 static pthread_t visdn_q931_thread = AST_PTHREADT_NULL;
 
 struct visdn_state visdn = {
@@ -1202,7 +1205,7 @@ #if 0
        struct visdn_chan *visdn_chan1 = to_visdn_chan(c0);
        struct visdn_chan *visdn_chan2 = to_visdn_chan(c1);
 
-       char path[100], dest1[100], dest2[100];
+       char path[MAX_SYS_PATH], dest1[MAX_SYS_PATH], dest2[MAX_SYS_PATH];
 
        snprintf(path, sizeof(path),
                "/sys/class/net/%s/visdn_channel/connected/../B%d",
@@ -3987,7 +3990,7 @@ static void visdn_q931_connect_channel(
 
        visdn_chan->channel_has_been_connected = TRUE;
 
-       char path[100], dest[100];
+       char path[MAX_SYS_PATH], dest[MAX_SYS_PATH];
        snprintf(path, sizeof(path),
                "%s/B%d",
                ic->intf->remote_port,
-- 
Matthias Urlichs   |   {M:U} IT Design @ m-u-it.de   |  [EMAIL PROTECTED]
Disclaimer: The quote was selected randomly. Really. | http://smurf.noris.de
 - -
:lexer: /lek'sr/ n. Common hacker shorthand for `lexical analyzer', the
   input-tokenizing stage in the parser for a language (the part that
   breaks it into word-like pieces). "Some C lexers get confused by the
   old-style compound ops like `=-'."
_______________________________________________
Visdn-hackers mailing list
[email protected]
https://mailman.uli.it/mailman/listinfo/visdn-hackers

Reply via email to