GNU bug report logs -
#1009
Carbon: posix-file-name-to-mac
Previous Next
Full log
Message #5 received at submit <at> emacsbugs.donarmstrong.com (full text, mbox):
[Message part 1 (text/plain, inline)]
(posix-file-name-to-mac "~emacs/asd")
(posix-file-name-to-mac "/tmp/")
will crash a 22 branch Carbon Emacs.
A fix is below - it disables ~emacs and /tmp expansion when getpwnam
or get_temp_dir_name return NULL, which they seem to do.
(OS X has /tmp, so I'm not sure if the code isn't leftover from MacOS
and stopped working at some point.)
- D
Index: mac.c
===================================================================
RCS file: /sources/emacs/emacs/src/Attic/mac.c,v
retrieving revision 1.77.2.10
diff -c -r1.77.2.10 mac.c
*** mac.c 29 Aug 2008 08:18:07 -0000 1.77.2.10
--- mac.c 20 Sep 2008 12:29:24 -0000
***************
*** 214,237 ****
if (strncmp (p, "~emacs/", 7) == 0)
{
struct passwd *pw = getpwnam ("emacs");
! p += 7;
! if (strlen (pw->pw_dir) + strlen (p) > MAXPATHLEN)
! return 0;
! strcpy (expanded_pathname, pw->pw_dir);
! strcat (expanded_pathname, p);
! p = expanded_pathname;
! /* now p points to the pathname with emacs dir prefix */
}
else if (strncmp (p, "/tmp/", 5) == 0)
{
char *t = get_temp_dir_name ();
! p += 5;
! if (strlen (t) + strlen (p) > MAXPATHLEN)
! return 0;
! strcpy (expanded_pathname, t);
! strcat (expanded_pathname, p);
! p = expanded_pathname;
! /* now p points to the pathname with emacs dir prefix */
}
else if (*p != '/') /* relative pathname */
strcat (mfn, ":");
--- 215,244 ----
if (strncmp (p, "~emacs/", 7) == 0)
{
struct passwd *pw = getpwnam ("emacs");
! if (pw != NULL)
! {
! p += 7;
! if (strlen (pw->pw_dir) + strlen (p) > MAXPATHLEN)
! return 0;
! strcpy (expanded_pathname, pw->pw_dir);
! strcat (expanded_pathname, p);
! p = expanded_pathname;
! /* now p points to the pathname with emacs dir prefix */
! }
}
else if (strncmp (p, "/tmp/", 5) == 0)
{
char *t = get_temp_dir_name ();
! if (t != NULL)
! {
! p += 5;
! if (strlen (t) + strlen (p) > MAXPATHLEN)
! return 0;
! strcpy (expanded_pathname, t);
! strcat (expanded_pathname, p);
! p = expanded_pathname;
! /* now p points to the pathname with emacs dir prefix */
! }
}
else if (*p != '/') /* relative pathname */
strcat (mfn, ":");
[smime.p7s (application/pkcs7-signature, attachment)]
This bug report was last modified 14 years and 133 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.