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