On Sun, Aug 17, 2008 at 05:14:55PM +0200, Stefan Lesicnik wrote: > Package: zaptel > Version: 1:1.4.11~dfsg-1 > User: ubuntu-de...@lists.ubuntu.com > Usertags: origin-ubuntu ubuntu-patch intrepid > > Attached please find the debdiff used to close Ubuntu LP: 64059 - > https://bugs.launchpad.net/ubuntu/+source/zaptel/+bug/64059 > as it may be useful to Debian.
Looking at this patch, I see it is invalid. It merely uses the invalid upstream udev rules file, and that one has wrong user and group. Attached a patch that fixes most of the problem at the source: changes device names from zap<something> to zap!<something>. This makes udev put them automatically under /dev/zap/ ('!' translates as a directory separator). A separate udev rule to set the permissions would still be needed, but we already have that in Debian. I don't think this patch will ever need applying. But if anybody actually needs it, go ahead. The off-by-one part of it should probably get fixed, though. -- Tzafrir Cohen icq#16849755 jabber:tzafrir.co...@xorcom.com +972-50-7952406 mailto:tzafrir.co...@xorcom.com http://www.xorcom.com iax:gu...@local.xorcom.com/tzafrir
Add '!' as a directory separator to Zaptel device names. This makes udev generate files under zap/ on his own. Also fixes a off-by-one error which happens to be unexploitable. This is a backport of the fixes from DAHDI: r5179. --- a/kernel/zaptel-base.c +++ b/kernel/zaptel-base.c @@ -5299,7 +5299,7 @@ int zt_register(struct zt_span *span, in for (x = 0; x < span->channels; x++) { char chan_name[50]; if (span->chans[x].channo < 250) { - sprintf(chan_name, "zap%d", span->chans[x].channo); + sprintf(chan_name, "zap!%d", span->chans[x].channo); CLASS_DEV_CREATE(zap_class, MKDEV(ZT_MAJOR, span->chans[x].channo), NULL, chan_name); } } @@ -7826,9 +7826,9 @@ int zt_register_chardev(struct zt_charde #endif /* CONFIG_DEVFS_FS */ #ifdef CONFIG_ZAP_UDEV - char udevname[strlen(dev->name) + 3]; + char udevname[strlen(dev->name) + sizeof("zap!")]; - strcpy(udevname, "zap"); + strcpy(udevname, "zap!"); strcat(udevname, dev->name); CLASS_DEV_CREATE(zap_class, MKDEV(ZT_MAJOR, dev->minor), NULL, udevname); #endif /* CONFIG_ZAP_UDEV */ @@ -7862,10 +7862,10 @@ static int __init zt_init(void) { #ifdef CONFIG_ZAP_UDEV /* udev support functions */ zap_class = class_create(THIS_MODULE, "zaptel"); - CLASS_DEV_CREATE(zap_class, MKDEV(ZT_MAJOR, 253), NULL, "zaptimer"); - CLASS_DEV_CREATE(zap_class, MKDEV(ZT_MAJOR, 254), NULL, "zapchannel"); - CLASS_DEV_CREATE(zap_class, MKDEV(ZT_MAJOR, 255), NULL, "zappseudo"); - CLASS_DEV_CREATE(zap_class, MKDEV(ZT_MAJOR, 0), NULL, "zapctl"); + CLASS_DEV_CREATE(zap_class, MKDEV(ZT_MAJOR, 253), NULL, "zap!timer"); + CLASS_DEV_CREATE(zap_class, MKDEV(ZT_MAJOR, 254), NULL, "zap!channel"); + CLASS_DEV_CREATE(zap_class, MKDEV(ZT_MAJOR, 255), NULL, "zap!pseudo"); + CLASS_DEV_CREATE(zap_class, MKDEV(ZT_MAJOR, 0), NULL, "zap!ctl"); #endif /* CONFIG_ZAP_UDEV */ #ifdef CONFIG_DEVFS_FS