< prev index next >
src/java.desktop/unix/native/libsplashscreen/splashscreen_sys.c
Print this page
@@ -795,58 +795,62 @@
void
SplashReconfigure(Splash * splash) {
sendctl(splash, SPLASHCTL_RECONFIGURE);
}
-SPLASHEXPORT char*
+SPLASHEXPORT jboolean
SplashGetScaledImageName(const char* jarName, const char* fileName,
- float *scaleFactor)
+ float *scaleFactor, char *scaledImgName,
+ const size_t scaledImageNameLength)
{
*scaleFactor = 1;
#ifndef __linux__
- return NULL;
+ return JNI_FALSE;
#endif
*scaleFactor = getNativeScaleFactor();
if (*scaleFactor == 2.0) {
- char *scaledImgName = NULL;
size_t length = 0;
char *stringToAppend = ".java-scale2x";
char *dupFileName = strdup(fileName);
char *fileExtension = strrchr(dupFileName, '.');
if (fileExtension == NULL) {
length = strlen(dupFileName) + strlen(stringToAppend) + 1;
- scaledImgName = SAFE_SIZE_ARRAY_ALLOC(malloc, length, sizeof (char));
+ if (length > scaledImageNameLength) {
+ *scaleFactor = 1;
+ free(dupFileName);
+ return JNI_FALSE;
+ }
int retVal = snprintf(scaledImgName, length, "%s%s",
dupFileName, stringToAppend);
- if(retVal < 0 || (retVal != length - 1)) {
- free(scaledImgName);
+ if (retVal < 0 || (retVal != length - 1)) {
free(dupFileName);
*scaleFactor = 1;
- return NULL;
+ return JNI_FALSE;
}
} else {
int length_without_ext = fileExtension - dupFileName;
length = length_without_ext +
strlen(stringToAppend) + strlen(fileExtension) + 1;
- scaledImgName = SAFE_SIZE_ARRAY_ALLOC(malloc, length, sizeof (char));
+ if (length > scaledImageNameLength) {
+ *scaleFactor = 1;
+ free(dupFileName);
+ return JNI_FALSE;
+ }
int retVal = snprintf(scaledImgName, length, "%.*s%s%s",
length_without_ext, dupFileName, stringToAppend, fileExtension);
- if(retVal < 0 || retVal != length - 1) {
- free(scaledImgName);
+ if (retVal < 0 || retVal != length - 1) {
free(dupFileName);
*scaleFactor = 1;
- return NULL;
+ return JNI_FALSE;
}
}
free(dupFileName);
FILE *fp;
if (!(fp = fopen(scaledImgName, "r"))) {
*scaleFactor = 1;
- free(scaledImgName);
- return NULL;
+ return JNI_FALSE;
}
fclose(fp);
- return scaledImgName;
+ return JNI_TRUE;
}
- return NULL;
+ return JNI_FALSE;
}
-
< prev index next >