undefect. CWE-407 — 63 sites patched across 27 ecosystems
Authors: russell@unturf.com · brackishbert@gmail.com · foxhop.net · TimeHexOn.com Patches, unit tests, benchmarks, whitepaper, and outreach briefs. Public domain — no copyright claimed. Use freely.
This commit is contained in:
commit
0a580b313d
70422 changed files with 17213626 additions and 0 deletions
|
|
@ -0,0 +1,155 @@
|
|||
/*
|
||||
* Copyright (c) 2018, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#import <jni_util.h>
|
||||
|
||||
static NSWindow *testWindow;
|
||||
static NSColorPanel *colorPanel;
|
||||
|
||||
#define JNI_COCOA_ENTER(env) \
|
||||
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; \
|
||||
@try {
|
||||
|
||||
#define JNI_COCOA_EXIT(env) \
|
||||
} \
|
||||
@catch (NSException *e) { \
|
||||
NSLog(@"%@", [e callStackSymbols]); \
|
||||
} \
|
||||
@finally { \
|
||||
[pool drain]; \
|
||||
};
|
||||
|
||||
/*
|
||||
* Pass the block to a selector of a class that extends NSObject
|
||||
* There is no need to copy the block since this class always waits.
|
||||
*/
|
||||
@interface BlockRunner : NSObject { }
|
||||
|
||||
+ (void)invokeBlock:(void (^)())block;
|
||||
@end
|
||||
|
||||
@implementation BlockRunner
|
||||
|
||||
+ (void)invokeBlock:(void (^)())block{
|
||||
block();
|
||||
}
|
||||
|
||||
+ (void)performBlock:(void (^)())block {
|
||||
[self performSelectorOnMainThread:@selector(invokeBlock:) withObject:block waitUntilDone:YES];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
/*
|
||||
* Class: TestMainKeyWindow
|
||||
* Method: setup
|
||||
* Signature: ()V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_TestMainKeyWindow_setup(JNIEnv *env, jclass cl)
|
||||
{
|
||||
JNI_COCOA_ENTER(env);
|
||||
|
||||
void (^block)() = ^(){
|
||||
NSScreen *mainScreen = [[NSScreen screens] objectAtIndex:0];
|
||||
NSRect screenFrame = [mainScreen frame];
|
||||
NSRect frame = NSMakeRect(130, screenFrame.size.height - 280, 200, 100);
|
||||
|
||||
#if __MAC_OS_X_VERSION_MAX_ALLOWED >= 101200
|
||||
NSWindowStyleMask style = NSWindowStyleMaskTitled;
|
||||
#else
|
||||
NSInteger style = NSTitledWindowMask;
|
||||
#endif
|
||||
|
||||
NSRect rect = [NSWindow contentRectForFrameRect:frame styleMask:style];
|
||||
NSBackingStoreType bt = NSBackingStoreBuffered;
|
||||
testWindow = [[[NSWindow alloc] initWithContentRect:rect styleMask:style backing:bt defer:NO] retain];
|
||||
testWindow.title = @"NSWindow";
|
||||
[testWindow setBackgroundColor:[NSColor blueColor]];
|
||||
[testWindow makeKeyAndOrderFront:nil];
|
||||
// Java coordinates are 100, 200
|
||||
|
||||
colorPanel = [[NSColorPanel sharedColorPanel] retain];
|
||||
[colorPanel setReleasedWhenClosed: YES];
|
||||
colorPanel.restorable = NO;
|
||||
[colorPanel setFrame:NSMakeRect(130, screenFrame.size.height - 500, 200, 200) display:NO];
|
||||
// Java coordinates are 100, 400
|
||||
[colorPanel makeKeyAndOrderFront: nil];
|
||||
};
|
||||
|
||||
if ([NSThread isMainThread]) {
|
||||
block();
|
||||
} else {
|
||||
[BlockRunner performBlock:block];
|
||||
}
|
||||
|
||||
JNI_COCOA_EXIT(env);
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: TestMainKeyWindow
|
||||
* Method: takedown
|
||||
* Signature: ()V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_TestMainKeyWindow_takedown(JNIEnv *env, jclass cl)
|
||||
{
|
||||
JNI_COCOA_ENTER(env);
|
||||
|
||||
void (^block)() = ^(){
|
||||
if (testWindow != nil) {
|
||||
[testWindow close];
|
||||
testWindow = nil;
|
||||
}
|
||||
if (colorPanel != nil) {
|
||||
[colorPanel orderOut:nil];
|
||||
colorPanel = nil;
|
||||
}
|
||||
};
|
||||
|
||||
if ([NSThread isMainThread]) {
|
||||
block();
|
||||
} else {
|
||||
[BlockRunner performBlock:block];
|
||||
}
|
||||
|
||||
JNI_COCOA_EXIT(env);
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: TestMainKeyWindow
|
||||
* Method: activateApplication
|
||||
* Signature: ()V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_TestMainKeyWindow_activateApplication
|
||||
(JNIEnv *env, jclass cl)
|
||||
{
|
||||
JNI_COCOA_ENTER(env);
|
||||
|
||||
void (^block)() = ^(){
|
||||
[NSApp activateIgnoringOtherApps:YES];
|
||||
};
|
||||
|
||||
[BlockRunner performBlock:block];
|
||||
|
||||
JNI_COCOA_EXIT(env);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue