Re: [BUG] Segmentation fault when copy symlink with checked "Stable Symlinks"

2005-09-17 Thread Jindrich Novy
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"

2005-09-17 Thread Leonard den Ottolander
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"

2005-09-17 Thread Leonard den Ottolander
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"

2005-09-17 Thread Leonard den Ottolander
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"

2005-09-17 Thread Leonard den Ottolander
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"

2005-09-13 Thread Marcin Garski

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"

2005-09-13 Thread Jindrich Novy
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"

2005-09-13 Thread Pavel Tsekov
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"

2005-09-13 Thread Jindrich Novy
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"

2005-09-13 Thread Pavel Tsekov
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"

2005-09-13 Thread Jindrich Novy
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"

2005-09-13 Thread Pavel Tsekov
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"

2005-09-12 Thread Jindrich Novy
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"

2005-09-12 Thread Marcin Garski

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