Re: [BUG] Segmentation fault when copy symlink with checked "Stable Symlinks"
Hi Leonard, On Sat, 2005-09-17 at 12:59 +0200, Leonard den Ottolander wrote: > Hi, > > On Sat, 2005-09-17 at 12:48 +0200, Leonard den Ottolander wrote: > > Hi Jindrich, > > > > On Tue, 2005-09-13 at 13:07 +0200, Jindrich Novy wrote: > > > - my_second = resolve_symlinks (second); > > > - if (my_second == NULL) { > > > - g_free (my_first); > > > + if (my_second == NULL) > > > return buf; > > > - } > > > > Why do you drop the g_free of my_first here? > > It seems like the whole if (j) block is redundant. Right? Yeah, the whole if (j) part is pretty bogus and can be removed. Apparently there's no leakage of my_first because the if (my_second == NULL) in the if (j) condition never succeed as it's checked already before the loop. So we can remove it safely. Thanks for the review. The changelog entries and separate patches are comming up. 2005-09-17 Jindrich Novy <[EMAIL PROTECTED]> * util.c: Fixed segfault in diff_two_paths() when symlink is copied with "Stable Symlinks" checked. * file.c: Fixed off-by-one indexing error in make_symlink() causing generation of dangled symlinks. Cheers, Jindrich -- Jindrich Novy <[EMAIL PROTECTED]>, http://people.redhat.com/jnovy/ (o_ _o) //\ The worst evil in the world is refusal to think. //\ V_/_ _\_V --- mc-4.6.1/src/util.c.jn 2005-05-27 16:19:18.0 +0200 +++ mc-4.6.1/src/util.c 2005-09-17 13:58:47.0 +0200 @@ -1140,22 +1140,20 @@ * as needed up in first and then goes down using second */ char *diff_two_paths (const char *first, const char *second) { -char *p, *q, *r, *s, *buf = 0; +char *p, *q, *r, *s, *buf = NULL; int i, j, prevlen = -1, currlen; char *my_first = NULL, *my_second = NULL; my_first = resolve_symlinks (first); if (my_first == NULL) return NULL; +my_second = resolve_symlinks (second); +if (my_second == NULL) { + g_free (my_first); + return NULL; +} for (j = 0; j < 2; j++) { p = my_first; - if (j) { - my_second = resolve_symlinks (second); - if (my_second == NULL) { - g_free (my_first); - return buf; - } - } q = my_second; for (;;) { r = strchr (p, PATH_SEP); --- mc-4.6.1/src/file.c.jn 2005-05-27 16:19:18.0 +0200 +++ mc-4.6.1/src/file.c 2005-09-17 13:58:20.0 +0200 @@ -382,7 +382,7 @@ const char *r = strrchr (src_path, PATH_SEP); if (r) { - p = g_strndup (src_path, r - src_path); + p = g_strndup (src_path, r - src_path + 1); if (*dst_path == PATH_SEP) q = g_strdup (dst_path); else ___ Mc-devel mailing list http://mail.gnome.org/mailman/listinfo/mc-devel
Re: [BUG] Segmentation fault when copy symlink with checked "Stable Symlinks"
Hi Jindrich, On Tue, 2005-09-13 at 13:07 +0200, Jindrich Novy wrote: > The attached patch fixes two nasty bugs in file.c and util.c. Split in two, cleaned up, and committed both. Thanks. Leonard. -- mount -t life -o ro /dev/dna /genetic/research ___ Mc-devel mailing list http://mail.gnome.org/mailman/listinfo/mc-devel
Re: [BUG] Segmentation fault when copy symlink with checked "Stable Symlinks"
Hi, On Sat, 2005-09-17 at 12:48 +0200, Leonard den Ottolander wrote: > Hi Jindrich, > > On Tue, 2005-09-13 at 13:07 +0200, Jindrich Novy wrote: > > - my_second = resolve_symlinks (second); > > - if (my_second == NULL) { > > - g_free (my_first); > > + if (my_second == NULL) > > return buf; > > - } > > Why do you drop the g_free of my_first here? It seems like the whole if (j) block is redundant. Right? Leonard. -- mount -t life -o ro /dev/dna /genetic/research ___ Mc-devel mailing list http://mail.gnome.org/mailman/listinfo/mc-devel
Re: [BUG] Segmentation fault when copy symlink with checked "Stable Symlinks"
Hi Jindrich, On Tue, 2005-09-13 at 13:07 +0200, Jindrich Novy wrote: > The attached patch fixes two nasty bugs in file.c and util.c. Could you please supply fixes for different issues in different patches? Thanks. Leonard. -- mount -t life -o ro /dev/dna /genetic/research ___ Mc-devel mailing list http://mail.gnome.org/mailman/listinfo/mc-devel
Re: [BUG] Segmentation fault when copy symlink with checked "Stable Symlinks"
Hi Jindrich, On Tue, 2005-09-13 at 13:07 +0200, Jindrich Novy wrote: > - my_second = resolve_symlinks (second); > - if (my_second == NULL) { > - g_free (my_first); > + if (my_second == NULL) > return buf; > - } Why do you drop the g_free of my_first here? By the way, this patch is a bit sloppy wrt whitespace. And could you please add a change log entry? Leonard. -- mount -t life -o ro /dev/dna /genetic/research ___ Mc-devel mailing list http://mail.gnome.org/mailman/listinfo/mc-devel
Re: [BUG] Segmentation fault when copy symlink with checked "Stable Symlinks"
Jindrich Novy wrote: Marcin, could you please file a bug in bugzilla.redhat.com? The patch is comming soon. As you wish :) https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=168184 Thanks for fixing the bug! -- Marcin Garski ___ Mc-devel mailing list http://mail.gnome.org/mailman/listinfo/mc-devel
Re: [BUG] Segmentation fault when copy symlink with checked "Stable Symlinks"
Hello, On Tue, 2005-09-13 at 01:05 +0200, Marcin Garski wrote: > Hi, > > mc-4.6.1a-0.11.FC4 from Fedora Core 4 on x86_64. > > 1. Create "mc" directory > 2. Change directory to "mc" > 3. Create ".eDonkey2000" directory > 4. Create ".overnet" symlink pointing to ".eDonkey2000" > 5. Copy ".overnet" symlink to "/tmp" BUT check "Stable Symlinks" in copy > dialog. > 6. Watch mc crash > > If you want more info, just write :) The attached patch fixes two nasty bugs in file.c and util.c. The first one is the off-by-one error in path indexing what causes a generation of dangled symlinks. The second one is the culprit of the segfault you presented. It applies cleanly to 4.6.1 release. Jindrich -- Jindrich Novy <[EMAIL PROTECTED]>, http://people.redhat.com/jnovy/ (o_ _o) //\ The worst evil in the world is refusal to think. //\ V_/_ _\_V --- mc-4.6.1/src/util.c.jn 2005-05-27 16:19:18.0 +0200 +++ mc-4.6.1/src/util.c 2005-09-13 12:57:02.0 +0200 @@ -1140,21 +1140,23 @@ * as needed up in first and then goes down using second */ char *diff_two_paths (const char *first, const char *second) { -char *p, *q, *r, *s, *buf = 0; +char *p, *q, *r, *s, *buf = NULL; int i, j, prevlen = -1, currlen; char *my_first = NULL, *my_second = NULL; my_first = resolve_symlinks (first); if (my_first == NULL) return NULL; +my_second= resolve_symlinks (second); +if (my_second == NULL) { + g_free (my_first); + return NULL; +} for (j = 0; j < 2; j++) { p = my_first; if (j) { - my_second = resolve_symlinks (second); - if (my_second == NULL) { - g_free (my_first); + if (my_second == NULL) return buf; - } } q = my_second; for (;;) { --- mc-4.6.1/src/file.c.jn 2005-05-27 16:19:18.0 +0200 +++ mc-4.6.1/src/file.c 2005-09-13 12:57:02.0 +0200 @@ -382,7 +382,7 @@ const char *r = strrchr (src_path, PATH_SEP); if (r) { - p = g_strndup (src_path, r - src_path); + p = g_strndup (src_path, r - src_path + 1); if (*dst_path == PATH_SEP) q = g_strdup (dst_path); else ___ Mc-devel mailing list http://mail.gnome.org/mailman/listinfo/mc-devel
Re: [BUG] Segmentation fault when copy symlink with checked "Stable Symlinks"
Hello, On Tue, 13 Sep 2005, Jindrich Novy wrote: > On Tue, 2005-09-13 at 12:18 +0300, Pavel Tsekov wrote: > > Hello, > > > > On Tue, 13 Sep 2005, Jindrich Novy wrote: > > > > > Marcin, could you please file a bug in bugzilla.redhat.com? The patch is > > > comming soon. > > > > Why use RedHat's bugzilla ? What's the problem with the one at savannah - > > after all this bug is not RH specific. > > Because Marcin wrote he had problems with FC4 mc. Don't worry, I'd send > the patch here first ;) Well, of course, but we both know that it is not specific to FC4, don't we ? I am not worried at all. ___ Mc-devel mailing list http://mail.gnome.org/mailman/listinfo/mc-devel
Re: [BUG] Segmentation fault when copy symlink with checked "Stable Symlinks"
On Tue, 2005-09-13 at 12:18 +0300, Pavel Tsekov wrote: > Hello, > > On Tue, 13 Sep 2005, Jindrich Novy wrote: > > > Marcin, could you please file a bug in bugzilla.redhat.com? The patch is > > comming soon. > > Why use RedHat's bugzilla ? What's the problem with the one at savannah - > after all this bug is not RH specific. Because Marcin wrote he had problems with FC4 mc. Don't worry, I'd send the patch here first ;) Jindrich -- Jindrich Novy <[EMAIL PROTECTED]>, http://people.redhat.com/jnovy/ (o_ _o) //\ The worst evil in the world is refusal to think. //\ V_/_ _\_V ___ Mc-devel mailing list http://mail.gnome.org/mailman/listinfo/mc-devel
Re: [BUG] Segmentation fault when copy symlink with checked "Stable Symlinks"
Hello, On Tue, 13 Sep 2005, Jindrich Novy wrote: > Marcin, could you please file a bug in bugzilla.redhat.com? The patch is > comming soon. Why use RedHat's bugzilla ? What's the problem with the one at savannah - after all this bug is not RH specific. ___ Mc-devel mailing list http://mail.gnome.org/mailman/listinfo/mc-devel
Re: [BUG] Segmentation fault when copy symlink with checked "Stable Symlinks"
On Tue, 2005-09-13 at 10:44 +0300, Pavel Tsekov wrote: > Hello, > > On Tue, 13 Sep 2005, Jindrich Novy wrote: > > > > 1. Create "mc" directory > > > 2. Change directory to "mc" > > > 3. Create ".eDonkey2000" directory > > > 4. Create ".overnet" symlink pointing to ".eDonkey2000" > > > 5. Copy ".overnet" symlink to "/tmp" BUT check "Stable Symlinks" in copy > > > dialog. > > > 6. Watch mc crash > > > > > > If you want more info, just write :) > > > > I cannot reproduce it either on i386 or x86_64 box. My mc doesn't crash > > even if I have "Stable Symlinks" checked or not. > > > > rpm -q mc > > mc-4.6.1a-0.11.FC4 > > > > Some special setup is needed? Do you see this only on your machine or > > have you reproduced it on some other machine as well? > > Doesn't seem so - see below: > > My setup: FC3 + MC from latest cvs > > [EMAIL PROTECTED] mc]$ ls -la > total 52 > drwxrwxr-x 3 ptsekov ptsekov 4096 Sep 13 10:38 . > drwxr-xrwt 16 ptsekov ptsekov 40960 Sep 13 10:38 .. > drwxrwxr-x 2 ptsekov ptsekov 4096 Sep 13 10:36 .eDonkey2000 > lrwxrwxrwx 1 ptsekov ptsekov12 Sep 13 10:38 .overnet -> .eDonkey2000 Yes, it crashes only with relative symlinks. When the symlink is created from within mc, the symlink is absolute so mc won't crash. Now I see the segfault. Marcin, could you please file a bug in bugzilla.redhat.com? The patch is comming soon. Thanks, Jindrich -- Jindrich Novy <[EMAIL PROTECTED]>, http://people.redhat.com/jnovy/ (o_ _o) //\ The worst evil in the world is refusal to think. //\ V_/_ _\_V ___ Mc-devel mailing list http://mail.gnome.org/mailman/listinfo/mc-devel
Re: [BUG] Segmentation fault when copy symlink with checked "Stable Symlinks"
Hello, On Tue, 13 Sep 2005, Jindrich Novy wrote: > > 1. Create "mc" directory > > 2. Change directory to "mc" > > 3. Create ".eDonkey2000" directory > > 4. Create ".overnet" symlink pointing to ".eDonkey2000" > > 5. Copy ".overnet" symlink to "/tmp" BUT check "Stable Symlinks" in copy > > dialog. > > 6. Watch mc crash > > > > If you want more info, just write :) > > I cannot reproduce it either on i386 or x86_64 box. My mc doesn't crash > even if I have "Stable Symlinks" checked or not. > > rpm -q mc > mc-4.6.1a-0.11.FC4 > > Some special setup is needed? Do you see this only on your machine or > have you reproduced it on some other machine as well? Doesn't seem so - see below: My setup: FC3 + MC from latest cvs [EMAIL PROTECTED] mc]$ ls -la total 52 drwxrwxr-x 3 ptsekov ptsekov 4096 Sep 13 10:38 . drwxr-xrwt 16 ptsekov ptsekov 40960 Sep 13 10:38 .. drwxrwxr-x 2 ptsekov ptsekov 4096 Sep 13 10:36 .eDonkey2000 lrwxrwxrwx 1 ptsekov ptsekov12 Sep 13 10:38 .overnet -> .eDonkey2000 Look at frame number 1 Program received signal SIGSEGV, Segmentation fault. 0x00467603 in strchr () from /lib/tls/libc.so.6 (gdb) bt #0 0x00467603 in strchr () from /lib/tls/libc.so.6 #1 0x0808fbb4 in diff_two_paths (first=0x946e000 "/tmp/", second=0xbff8bc40 "/tmp/mc.eDonkey2000") at ../../mc/src/util.c:1173 #2 0x08065ab8 in make_symlink (ctx=0x9475210, src_path=0x946de90 "/tmp/mc/.overnet", dst_path=0x946dfe8 "/tmp/.overnet") at ../../mc/src/file.c:397 #3 0x08065f11 in copy_file_file (ctx=0x9475210, src_path=0x946de90 "/tmp/mc/.overnet", dst_path=0x946dfe8 "/tmp/.overnet", ask_overwrite=1, progress_count=0xbff8ce28, progress_bytes=0xbff8ce20, is_toplevel_file=1) at ../../mc/src/file.c:542 #4 0x08068b08 in panel_operate (source_panel=0x9465b98, operation=OP_COPY, force_single=0) at ../../mc/src/file.c:1894 #5 0x0805a929 in copy_cmd () at ../../mc/src/cmd.c:308 #6 0x0809bed4 in buttonbar_call (bb=0x9473ae0, i=4) at ../../mc/src/widget.c:2286 #7 0x0809bf90 in buttonbar_callback (w=0x9473ae0, msg=WIDGET_HOTKEY, parm=269) at ../../mc/src/widget.c:2308 #8 0x08061167 in dlg_try_hotkey (h=0x9464538, d_key=269) at ../../mc/src/dialog.c:626 #9 0x08061242 in dlg_key_event (h=0x9464538, d_key=269) at ../../mc/src/dialog.c:664 #10 0x08061564 in dlg_process_event (h=0x9464538, key=269, event=0xbff8d040) at ../../mc/src/dialog.c:765 ___ Mc-devel mailing list http://mail.gnome.org/mailman/listinfo/mc-devel
Re: [BUG] Segmentation fault when copy symlink with checked "Stable Symlinks"
Hello Marcin, On Tue, 2005-09-13 at 01:05 +0200, Marcin Garski wrote: > Hi, > > mc-4.6.1a-0.11.FC4 from Fedora Core 4 on x86_64. > > 1. Create "mc" directory > 2. Change directory to "mc" > 3. Create ".eDonkey2000" directory > 4. Create ".overnet" symlink pointing to ".eDonkey2000" > 5. Copy ".overnet" symlink to "/tmp" BUT check "Stable Symlinks" in copy > dialog. > 6. Watch mc crash > > If you want more info, just write :) I cannot reproduce it either on i386 or x86_64 box. My mc doesn't crash even if I have "Stable Symlinks" checked or not. rpm -q mc mc-4.6.1a-0.11.FC4 Some special setup is needed? Do you see this only on your machine or have you reproduced it on some other machine as well? Jindrich -- Jindrich Novy <[EMAIL PROTECTED]>, http://people.redhat.com/jnovy/ (o_ _o) //\ The worst evil in the world is refusal to think. //\ V_/_ _\_V ___ Mc-devel mailing list http://mail.gnome.org/mailman/listinfo/mc-devel
[BUG] Segmentation fault when copy symlink with checked "Stable Symlinks"
Hi, mc-4.6.1a-0.11.FC4 from Fedora Core 4 on x86_64. 1. Create "mc" directory 2. Change directory to "mc" 3. Create ".eDonkey2000" directory 4. Create ".overnet" symlink pointing to ".eDonkey2000" 5. Copy ".overnet" symlink to "/tmp" BUT check "Stable Symlinks" in copy dialog. 6. Watch mc crash If you want more info, just write :) -- Best Regards Marcin Garski ___ Mc-devel mailing list http://mail.gnome.org/mailman/listinfo/mc-devel