[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#8254: race condition in dired.c's scmp function
From: |
Eli Zaretskii |
Subject: |
bug#8254: race condition in dired.c's scmp function |
Date: |
Tue, 15 Mar 2011 03:06:12 -0400 |
> Date: Mon, 14 Mar 2011 23:16:26 -0700
> From: Paul Eggert <eggert@cs.ucla.edu>
> Cc:
>
> The following code in the Emacs trunk src/dired.c's scmp function has
> undefined behavior:
>
> while (l
> && (DOWNCASE ((unsigned char) *s1++)
> == DOWNCASE ((unsigned char) *s2++)))
> l--;
>
> Because the DOWNCASE macro assigns to the global variables case_temp1
> and case_temp2, (DOWNCASE (x) == DOWNCASE (y)) is not valid, as the
> assignments can collide and lead to a race condition.
> [...]
> I plan to work around the problem with something like the following
> patch.
Whew! How about a much simpler fix:
while (l
&& (c1 = DOWNCASE ((unsigned char) *s1++),
c2 = DOWNCASE ((unsigned char) *s2++),
c1 == c2))
l--;
(with suitable declarations of c1 and c2)? Will that fix the
undefined behavior?
- bug#8254: race condition in dired.c's scmp function, Paul Eggert, 2011/03/15
- bug#8254: race condition in dired.c's scmp function,
Eli Zaretskii <=
- bug#8254: race condition in dired.c's scmp function, Paul Eggert, 2011/03/15
- bug#8254: race condition in dired.c's scmp function, Juanma Barranquero, 2011/03/15
- bug#8254: race condition in dired.c's scmp function, Paul Eggert, 2011/03/15
- bug#8254: race condition in dired.c's scmp function, Stefan Monnier, 2011/03/15
- bug#8254: race condition in dired.c's scmp function, Paul Eggert, 2011/03/15
- bug#8254: race condition in dired.c's scmp function, Richard Stallman, 2011/03/16
- bug#8254: race condition in dired.c's scmp function, Paul Eggert, 2011/03/16
- bug#8254: race condition in dired.c's scmp function, Paul Eggert, 2011/03/15