[Xquartz-changes] xserver: Branch 'server-1.6-apple' - 2 commits
Jeremy Huddleston
jeremyhu at freedesktop.org
Thu Feb 18 09:59:10 PST 2010
hw/xquartz/GL/indirect.c | 2 -
hw/xquartz/GL/visualConfigs.c | 3 --
hw/xquartz/X11Application.m | 18 +++++++++--------
hw/xquartz/mach-startup/bundle-main.c | 30 ++++++++++++++++++++++-------
hw/xquartz/mach-startup/stub.c | 7 ------
hw/xquartz/pbproxy/x-selection.h | 9 --------
hw/xquartz/quartzAudio.c | 35 +++++++++++++++++-----------------
hw/xquartz/quartzKeyboard.c | 2 -
8 files changed, 54 insertions(+), 52 deletions(-)
New commits:
commit 67387a51c6b4ea03baa8138b08e99480c6a35606
Author: Jeremy Huddleston <jeremyhu at apple.com>
Date: Mon Feb 15 16:46:21 2010 -0800
XQuartz: Fix a possible buffer overrun in quartzAudio
Also dropped deprecated API while there
Signed-off-by: Jeremy Huddleston <jeremyhu at apple.com>
(cherry picked from commit 4e8bf12b13690afa6d9fee0e339d3819ef16fb3f)
diff --git a/hw/xquartz/quartzAudio.c b/hw/xquartz/quartzAudio.c
index e4b49fc..708202b 100644
--- a/hw/xquartz/quartzAudio.c
+++ b/hw/xquartz/quartzAudio.c
@@ -62,7 +62,6 @@ typedef struct QuartzAudioRec {
UInt32 curFrame;
UInt32 remainingFrames;
UInt32 totalFrames;
- UInt32 bytesPerFrame;
double sampleRate;
UInt32 fadeLength;
@@ -117,9 +116,9 @@ static void QuartzFillBuffer(
unsigned int bufferFrameCount;
float multiplier, v;
int i;
-
+
buffer = (float *)audiobuffer->mData;
- bufferFrameCount = audiobuffer->mDataByteSize / data->bytesPerFrame;
+ bufferFrameCount = audiobuffer->mDataByteSize / (sizeof(float) * audiobuffer->mNumberChannels);
frameCount = min(bufferFrameCount, data->remainingFrames);
@@ -141,7 +140,7 @@ static void QuartzFillBuffer(
data->prevFrame = 0;
// adjust for space eaten by prev fade
- buffer += audiobuffer->mNumberChannels*frame;
+ b += audiobuffer->mNumberChannels*frame;
bufferFrameCount -= frame;
frameCount = min(bufferFrameCount, data->remainingFrames);
}
@@ -204,7 +203,8 @@ QuartzAudioIOProc(
if (wasPlaying && !data->playing) {
OSStatus err;
err = AudioDeviceStop(inDevice, QuartzAudioIOProc);
- fprintf(stderr, "Error stopping audio device: %ld\n", (long int)err);
+ if(err != noErr)
+ fprintf(stderr, "Error stopping audio device: %ld\n", (long int)err);
}
pthread_mutex_unlock(&data->lock);
return 0;
@@ -263,16 +263,17 @@ void QuartzAudioInit(void)
UInt32 propertySize;
OSStatus status;
AudioDeviceID outputDevice;
- AudioStreamBasicDescription outputStreamDescription;
double sampleRate;
-
+ AudioObjectPropertyAddress devicePropertyAddress = { kAudioHardwarePropertyDefaultOutputDevice, kAudioObjectPropertyScopeGlobal, kAudioObjectPropertyElementMaster };
+ AudioObjectPropertyAddress sampleRatePropertyAddress = { kAudioDevicePropertyNominalSampleRate, kAudioDevicePropertyScopeOutput, kAudioObjectPropertyElementMaster };
+
// Get the default output device
propertySize = sizeof(outputDevice);
- status = AudioHardwareGetProperty(
- kAudioHardwarePropertyDefaultOutputDevice,
- &propertySize, &outputDevice);
+ status = AudioObjectGetPropertyData(kAudioObjectSystemObject, &devicePropertyAddress,
+ 0, NULL,
+ &propertySize, &outputDevice);
if (status) {
- ErrorF("QuartzAudioInit: AudioHardwareGetProperty returned %ld\n",
+ ErrorF("QuartzAudioInit: AudioObjectGetPropertyData(output device) returned %ld\n",
(long)status);
return;
}
@@ -282,23 +283,22 @@ void QuartzAudioInit(void)
}
// Get the basic device description
- propertySize = sizeof(outputStreamDescription);
- status = AudioDeviceGetProperty(outputDevice, 0, FALSE,
- kAudioDevicePropertyStreamFormat,
- &propertySize, &outputStreamDescription);
+ sampleRate = 0.;
+ propertySize = sizeof(sampleRate);
+ status = AudioObjectGetPropertyData(outputDevice, &sampleRatePropertyAddress,
+ 0, NULL,
+ &propertySize, &sampleRate);
if (status) {
- ErrorF("QuartzAudioInit: GetProperty(stream format) returned %ld\n",
+ ErrorF("QuartzAudioInit: AudioObjectGetPropertyData(sample rate) returned %ld\n",
(long)status);
return;
}
- sampleRate = outputStreamDescription.mSampleRate;
// Fill in the playback data
data.frequency = 0;
data.amplitude = 0;
data.curFrame = 0;
data.remainingFrames = 0;
- data.bytesPerFrame = outputStreamDescription.mBytesPerFrame;
data.sampleRate = sampleRate;
// data.bufferByteCount = bufferByteCount;
data.playing = FALSE;
commit 216b304f1ebcc4f013b4b4664c9f10e12bb6080f
Author: Jeremy Huddleston <jeremyhu at apple.com>
Date: Wed Feb 10 17:56:30 2010 -0800
XQuartz: clang static analysis fixes
Signed-off-by: Jeremy Huddleston <jeremyhu at apple.com>
(cherry picked from commit 4127e8e5be5c366eb752bbb8d7f0ff5b519e641b)
diff --git a/hw/xquartz/GL/indirect.c b/hw/xquartz/GL/indirect.c
index 1762825..44380ff 100644
--- a/hw/xquartz/GL/indirect.c
+++ b/hw/xquartz/GL/indirect.c
@@ -548,7 +548,7 @@ static CGLPixelFormatObj makeFormat(__GLXconfig *conf) {
attr[i++] = conf->samples;
}
- attr[i++] = 0;
+ attr[i + 1] = 0;
error = CGLChoosePixelFormat(attr, &fobj, &formats);
if(error) {
diff --git a/hw/xquartz/GL/visualConfigs.c b/hw/xquartz/GL/visualConfigs.c
index f926778..bef27f0 100644
--- a/hw/xquartz/GL/visualConfigs.c
+++ b/hw/xquartz/GL/visualConfigs.c
@@ -62,7 +62,7 @@ __GLXconfig *__glXAquaCreateVisualConfigs(int *numConfigsPtr, int screenNumber)
int numConfigs = 0;
__GLXconfig *visualConfigs, *c;
struct glCapabilities caps;
- struct glCapabilitiesConfig *conf = NULL;
+ struct glCapabilitiesConfig *conf;
int stereo, depth, aux, buffers, stencil, accum, color, msample;
if(getGlCapabilities(&caps)) {
@@ -94,7 +94,6 @@ __GLXconfig *__glXAquaCreateVisualConfigs(int *numConfigsPtr, int screenNumber)
*/
assert(NULL != caps.configurations);
- conf = caps.configurations;
numConfigs = 0;
diff --git a/hw/xquartz/X11Application.m b/hw/xquartz/X11Application.m
index f3c8a30..3faa1cb 100644
--- a/hw/xquartz/X11Application.m
+++ b/hw/xquartz/X11Application.m
@@ -482,7 +482,7 @@ static NSMutableArray * cfarray_to_nsarray (CFArrayRef in) {
return out;
}
-- (CFPropertyListRef) prefs_get:(NSString *)key {
+- (CFPropertyListRef) prefs_get_copy:(NSString *)key {
CFPropertyListRef value;
value = CFPreferencesCopyAppValue ((CFStringRef) key, app_prefs_domain_cfstr);
@@ -543,7 +543,7 @@ static NSMutableArray * cfarray_to_nsarray (CFArrayRef in) {
CFPropertyListRef value;
int ret;
- value = [self prefs_get:key];
+ value = [self prefs_get_copy:key];
if (value != NULL && CFGetTypeID (value) == CFNumberGetTypeID ())
CFNumberGetValue (value, kCFNumberIntType, &ret);
@@ -561,7 +561,7 @@ static NSMutableArray * cfarray_to_nsarray (CFArrayRef in) {
CFPropertyListRef value;
const char *ret = NULL;
- value = [self prefs_get:key];
+ value = [self prefs_get_copy:key];
if (value != NULL && CFGetTypeID (value) == CFStringGetTypeID ()) {
NSString *s = (NSString *) value;
@@ -578,12 +578,13 @@ static NSMutableArray * cfarray_to_nsarray (CFArrayRef in) {
CFPropertyListRef value;
NSURL *ret = NULL;
- value = [self prefs_get:key];
+ value = [self prefs_get_copy:key];
if (value != NULL && CFGetTypeID (value) == CFStringGetTypeID ()) {
NSString *s = (NSString *) value;
ret = [NSURL URLWithString:s];
+ [ret retain];
}
if (value != NULL) CFRelease (value);
@@ -595,7 +596,7 @@ static NSMutableArray * cfarray_to_nsarray (CFArrayRef in) {
CFPropertyListRef value;
float ret = def;
- value = [self prefs_get:key];
+ value = [self prefs_get_copy:key];
if (value != NULL
&& CFGetTypeID (value) == CFNumberGetTypeID ()
@@ -613,7 +614,7 @@ static NSMutableArray * cfarray_to_nsarray (CFArrayRef in) {
CFPropertyListRef value;
int ret = def;
- value = [self prefs_get:key];
+ value = [self prefs_get_copy:key];
if (value != NULL) {
if (CFGetTypeID (value) == CFNumberGetTypeID ())
@@ -637,7 +638,7 @@ static NSMutableArray * cfarray_to_nsarray (CFArrayRef in) {
NSArray *ret = nil;
CFPropertyListRef value;
- value = [self prefs_get:key];
+ value = [self prefs_get_copy:key];
if (value != NULL) {
if (CFGetTypeID (value) == CFArrayGetTypeID ())
@@ -757,7 +758,7 @@ static NSMutableArray * cfarray_to_nsarray (CFArrayRef in) {
NSURL *url = [self prefs_copy_url:@PREFS_UPDATE_FEED default:nil];
if(url) {
[[SUUpdater sharedUpdater] setFeedURL:url];
- CFRelease(url);
+ [url release];
}
#endif
}
@@ -970,6 +971,7 @@ void X11ApplicationMain (int argc, char **argv, char **envp) {
// [[SUUpdater sharedUpdater] checkForUpdates:X11App];
#endif
+ [pool release];
[NSApp run];
/* not reached */
}
diff --git a/hw/xquartz/mach-startup/bundle-main.c b/hw/xquartz/mach-startup/bundle-main.c
index 0366f3b..4872ff5 100644
--- a/hw/xquartz/mach-startup/bundle-main.c
+++ b/hw/xquartz/mach-startup/bundle-main.c
@@ -641,30 +641,46 @@ static int execute(const char *command) {
static char *command_from_prefs(const char *key, const char *default_value) {
char *command = NULL;
- CFStringRef cfKey = CFStringCreateWithCString(NULL, key, kCFStringEncodingASCII);
- CFPropertyListRef PlistRef = CFPreferencesCopyAppValue(cfKey, kCFPreferencesCurrentApplication);
+ CFStringRef cfKey;
+ CFPropertyListRef PlistRef;
+
+ if(!key)
+ return NULL;
+
+ cfKey = CFStringCreateWithCString(NULL, key, kCFStringEncodingASCII);
+
+ if(!cfKey)
+ return NULL;
+
+ PlistRef = CFPreferencesCopyAppValue(cfKey, kCFPreferencesCurrentApplication);
if ((PlistRef == NULL) || (CFGetTypeID(PlistRef) != CFStringGetTypeID())) {
CFStringRef cfDefaultValue = CFStringCreateWithCString(NULL, default_value, kCFStringEncodingASCII);
int len = strlen(default_value) + 1;
+ if(!cfDefaultValue)
+ goto command_from_prefs_out;
+
CFPreferencesSetAppValue(cfKey, cfDefaultValue, kCFPreferencesCurrentApplication);
CFPreferencesAppSynchronize(kCFPreferencesCurrentApplication);
+ CFRelease(cfDefaultValue);
command = (char *)malloc(len * sizeof(char));
if(!command)
- return NULL;
+ goto command_from_prefs_out;
strcpy(command, default_value);
} else {
int len = CFStringGetLength((CFStringRef)PlistRef) + 1;
command = (char *)malloc(len * sizeof(char));
if(!command)
- return NULL;
+ goto command_from_prefs_out;
CFStringGetCString((CFStringRef)PlistRef, command, len, kCFStringEncodingASCII);
- }
-
+ }
+
+command_from_prefs_out:
if (PlistRef)
CFRelease(PlistRef);
-
+ if(cfKey)
+ CFRelease(cfKey);
return command;
}
diff --git a/hw/xquartz/mach-startup/stub.c b/hw/xquartz/mach-startup/stub.c
index 539894f..794c439 100644
--- a/hw/xquartz/mach-startup/stub.c
+++ b/hw/xquartz/mach-startup/stub.c
@@ -73,7 +73,6 @@ static void set_x11_path(void) {
#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1050
CFURLRef appURL = NULL;
- CFBundleRef bundle = NULL;
OSStatus osstatus = LSFindApplicationForInfo(kLSUnknownCreator, CFSTR(kX11AppBundleId), nil, nil, &appURL);
switch (osstatus) {
@@ -84,12 +83,6 @@ static void set_x11_path(void) {
exit(1);
}
- bundle = CFBundleCreate(NULL, appURL);
- if(!bundle) {
- fprintf(stderr, "Xquartz: Null value returned from CFBundleCreate().\n");
- exit(2);
- }
-
if (!CFURLGetFileSystemRepresentation(appURL, true, (unsigned char *)x11_path, sizeof(x11_path))) {
fprintf(stderr, "Xquartz: Error resolving URL for %s\n", kX11AppBundleId);
exit(3);
diff --git a/hw/xquartz/pbproxy/x-selection.h b/hw/xquartz/pbproxy/x-selection.h
index fc903d0..614c8b0 100644
--- a/hw/xquartz/pbproxy/x-selection.h
+++ b/hw/xquartz/pbproxy/x-selection.h
@@ -58,15 +58,6 @@ struct atom_list {
/* The unmapped window we use for fetching selections. */
Window _selection_window;
- /* Last time we declared anything on the pasteboard. */
- int _my_last_change;
-
- /* Name of the selection we're proxying onto the pasteboard. */
- Atom _proxied_selection;
-
- /* When true, we're expecting a SelectionNotify event. */
- unsigned int _pending_notify :1;
-
Atom request_atom;
struct {
diff --git a/hw/xquartz/quartzAudio.c b/hw/xquartz/quartzAudio.c
index af63d18..e4b49fc 100644
--- a/hw/xquartz/quartzAudio.c
+++ b/hw/xquartz/quartzAudio.c
@@ -204,6 +204,7 @@ QuartzAudioIOProc(
if (wasPlaying && !data->playing) {
OSStatus err;
err = AudioDeviceStop(inDevice, QuartzAudioIOProc);
+ fprintf(stderr, "Error stopping audio device: %ld\n", (long int)err);
}
pthread_mutex_unlock(&data->lock);
return 0;
diff --git a/hw/xquartz/quartzKeyboard.c b/hw/xquartz/quartzKeyboard.c
index 6116bff..bac762c 100644
--- a/hw/xquartz/quartzKeyboard.c
+++ b/hw/xquartz/quartzKeyboard.c
@@ -389,7 +389,7 @@ void DarwinKeyboardReloadHandler(void) {
KeySymsRec keySyms;
CFIndex initialKeyRepeatValue, keyRepeatValue;
BOOL ok;
- DeviceIntPtr pDev = darwinKeyboard;
+ DeviceIntPtr pDev;
const char *xmodmap = PROJECTROOT "/bin/xmodmap";
const char *sysmodmap = PROJECTROOT "/lib/X11/xinit/.Xmodmap";
const char *homedir = getenv("HOME");
More information about the Xquartz-changes
mailing list