From eb8be3e90a9c90a428696026d1e3b2152d7eefb4 Mon Sep 17 00:00:00 2001 From: George Peter Staplin Date: Thu, 25 Sep 2008 14:16:20 -0600 Subject: [PATCH] XQuartz: pbproxy: Fix another STRING bug. Fix the usage of the NSString cStringUsingEncoding: - it doesn't NUL terminate the string, which lead to a bus error. So, we use lengthOfBytesUsingEncoding: to get the length in bytes instead of strlen(). (cherry picked from commit 6333d619e747c3b6bd3ba7557e35c0e5f6daa40f) --- hw/xquartz/pbproxy/x-selection.m | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/hw/xquartz/pbproxy/x-selection.m b/hw/xquartz/pbproxy/x-selection.m index 14f69679d..b141db03b 100644 --- a/hw/xquartz/pbproxy/x-selection.m +++ b/hw/xquartz/pbproxy/x-selection.m @@ -528,7 +528,7 @@ get_property(Window win, Atom property, struct propdata *pdata, Bool delete, Ato pbtypes = [pb types]; if (pbtypes) { - long list[6]; + long list[6]; /* Don't forget to increase this if we handle more types! */ long count = 0; if ([pbtypes containsObject:NSStringPboardType]) @@ -619,7 +619,8 @@ get_property(Window win, Atom property, struct propdata *pdata, Bool delete, Ato { DB ("Latin-1\n"); bytes = [data cStringUsingEncoding:NSISOLatin1StringEncoding]; - length = strlen (bytes); + /*WARNING: bytes is not NUL-terminated. */ + length = [data lengthOfBytesUsingEncoding:NSISOLatin1StringEncoding]; } DB ("e->target %s\n", XGetAtomName (x_dpy, e->target)); @@ -760,7 +761,6 @@ get_property(Window win, Atom property, struct propdata *pdata, Bool delete, Ato [self send_reply:&reply]; return; } - /*FIXME Why is [bmimage retainCount] 2 here? */ DB ("bmimage retainCount after initWithData %u\n", [bmimage retainCount]);