Loading tools/aapt/AaptAssets.cpp +4 −4 Original line number Original line Diff line number Diff line Loading @@ -192,7 +192,7 @@ inline bool isNumber(const String8& string) { void AaptLocaleValue::setLanguage(const char* languageChars) { void AaptLocaleValue::setLanguage(const char* languageChars) { size_t i = 0; size_t i = 0; while ((*languageChars) != '\0') { while ((*languageChars) != '\0' && i < sizeof(language)/sizeof(language[0])) { language[i++] = tolower(*languageChars); language[i++] = tolower(*languageChars); languageChars++; languageChars++; } } Loading @@ -200,7 +200,7 @@ void AaptLocaleValue::setLanguage(const char* languageChars) { void AaptLocaleValue::setRegion(const char* regionChars) { void AaptLocaleValue::setRegion(const char* regionChars) { size_t i = 0; size_t i = 0; while ((*regionChars) != '\0') { while ((*regionChars) != '\0' && i < sizeof(region)/sizeof(region[0])) { region[i++] = toupper(*regionChars); region[i++] = toupper(*regionChars); regionChars++; regionChars++; } } Loading @@ -208,7 +208,7 @@ void AaptLocaleValue::setRegion(const char* regionChars) { void AaptLocaleValue::setScript(const char* scriptChars) { void AaptLocaleValue::setScript(const char* scriptChars) { size_t i = 0; size_t i = 0; while ((*scriptChars) != '\0') { while ((*scriptChars) != '\0' && i < sizeof(script)/sizeof(script[0])) { if (i == 0) { if (i == 0) { script[i++] = toupper(*scriptChars); script[i++] = toupper(*scriptChars); } else { } else { Loading @@ -220,7 +220,7 @@ void AaptLocaleValue::setScript(const char* scriptChars) { void AaptLocaleValue::setVariant(const char* variantChars) { void AaptLocaleValue::setVariant(const char* variantChars) { size_t i = 0; size_t i = 0; while ((*variantChars) != '\0') { while ((*variantChars) != '\0' && i < sizeof(variant)/sizeof(variant[0])) { variant[i++] = *variantChars; variant[i++] = *variantChars; variantChars++; variantChars++; } } Loading tools/aapt/Command.cpp +9 −4 Original line number Original line Diff line number Diff line Loading @@ -196,11 +196,16 @@ int doList(Bundle* bundle) goto bail; goto bail; } } #ifdef HAVE_ANDROID_OS static const bool kHaveAndroidOs = true; #else static const bool kHaveAndroidOs = false; #endif const ResTable& res = assets.getResources(false); const ResTable& res = assets.getResources(false); #ifndef HAVE_ANDROID_OS if (!kHaveAndroidOs) { printf("\nResource table:\n"); printf("\nResource table:\n"); res.print(false); res.print(false); #endif } Asset* manifestAsset = assets.openNonAsset("AndroidManifest.xml", Asset* manifestAsset = assets.openNonAsset("AndroidManifest.xml", Asset::ACCESS_BUFFER); Asset::ACCESS_BUFFER); Loading tools/aapt/Images.cpp +37 −21 Original line number Original line Diff line number Diff line Loading @@ -1095,6 +1095,41 @@ static void write_png(const char* imageName, } } } } static bool read_png_protected(png_structp read_ptr, String8& printableName, png_infop read_info, const sp<AaptFile>& file, FILE* fp, image_info* imageInfo) { if (setjmp(png_jmpbuf(read_ptr))) { return false; } png_init_io(read_ptr, fp); read_png(printableName.string(), read_ptr, read_info, imageInfo); const size_t nameLen = file->getPath().length(); if (nameLen > 6) { const char* name = file->getPath().string(); if (name[nameLen-5] == '9' && name[nameLen-6] == '.') { if (do_9patch(printableName.string(), imageInfo) != NO_ERROR) { return false; } } } return true; } static bool write_png_protected(png_structp write_ptr, String8& printableName, png_infop write_info, image_info* imageInfo, const Bundle* bundle) { if (setjmp(png_jmpbuf(write_ptr))) { return false; } write_png(printableName.string(), write_ptr, write_info, *imageInfo, bundle->getGrayscaleTolerance()); return true; } status_t preProcessImage(const Bundle* bundle, const sp<AaptAssets>& /* assets */, status_t preProcessImage(const Bundle* bundle, const sp<AaptAssets>& /* assets */, const sp<AaptFile>& file, String8* /* outNewLeafName */) const sp<AaptFile>& file, String8* /* outNewLeafName */) { { Loading Loading @@ -1126,8 +1161,6 @@ status_t preProcessImage(const Bundle* bundle, const sp<AaptAssets>& /* assets * status_t error = UNKNOWN_ERROR; status_t error = UNKNOWN_ERROR; const size_t nameLen = file->getPath().length(); fp = fopen(file->getSourceFile().string(), "rb"); fp = fopen(file->getSourceFile().string(), "rb"); if (fp == NULL) { if (fp == NULL) { fprintf(stderr, "%s: ERROR: Unable to open PNG file\n", printableName.string()); fprintf(stderr, "%s: ERROR: Unable to open PNG file\n", printableName.string()); Loading @@ -1145,22 +1178,9 @@ status_t preProcessImage(const Bundle* bundle, const sp<AaptAssets>& /* assets * goto bail; goto bail; } } if (setjmp(png_jmpbuf(read_ptr))) { if (!read_png_protected(read_ptr, printableName, read_info, file, fp, &imageInfo)) { goto bail; } png_init_io(read_ptr, fp); read_png(printableName.string(), read_ptr, read_info, &imageInfo); if (nameLen > 6) { const char* name = file->getPath().string(); if (name[nameLen-5] == '9' && name[nameLen-6] == '.') { if (do_9patch(printableName.string(), &imageInfo) != NO_ERROR) { goto bail; goto bail; } } } } write_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, 0, (png_error_ptr)NULL, write_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, 0, (png_error_ptr)NULL, (png_error_ptr)NULL); (png_error_ptr)NULL); Loading @@ -1178,14 +1198,10 @@ status_t preProcessImage(const Bundle* bundle, const sp<AaptAssets>& /* assets * png_set_write_fn(write_ptr, (void*)file.get(), png_set_write_fn(write_ptr, (void*)file.get(), png_write_aapt_file, png_flush_aapt_file); png_write_aapt_file, png_flush_aapt_file); if (setjmp(png_jmpbuf(write_ptr))) if (!write_png_protected(write_ptr, printableName, write_info, &imageInfo, bundle)) { { goto bail; goto bail; } } write_png(printableName.string(), write_ptr, write_info, imageInfo, bundle->getGrayscaleTolerance()); error = NO_ERROR; error = NO_ERROR; if (bundle->getVerbose()) { if (bundle->getVerbose()) { Loading tools/aapt/XMLNode.cpp +1 −1 Original line number Original line Diff line number Diff line Loading @@ -989,7 +989,7 @@ status_t XMLNode::assignResourceIds(const sp<AaptAssets>& assets, for (size_t i=0; i<N; i++) { for (size_t i=0; i<N; i++) { const attribute_entry& e = mAttributes.itemAt(i); const attribute_entry& e = mAttributes.itemAt(i); if (e.ns.size() <= 0) continue; if (e.ns.size() <= 0) continue; bool nsIsPublic; bool nsIsPublic = true; String16 pkg(getNamespaceResourcePackage(String16(assets->getPackage()), e.ns, &nsIsPublic)); String16 pkg(getNamespaceResourcePackage(String16(assets->getPackage()), e.ns, &nsIsPublic)); if (kIsDebug) { if (kIsDebug) { printf("Elem %s %s=\"%s\": namespace(%s) %s ===> %s\n", printf("Elem %s %s=\"%s\": namespace(%s) %s ===> %s\n", Loading Loading
tools/aapt/AaptAssets.cpp +4 −4 Original line number Original line Diff line number Diff line Loading @@ -192,7 +192,7 @@ inline bool isNumber(const String8& string) { void AaptLocaleValue::setLanguage(const char* languageChars) { void AaptLocaleValue::setLanguage(const char* languageChars) { size_t i = 0; size_t i = 0; while ((*languageChars) != '\0') { while ((*languageChars) != '\0' && i < sizeof(language)/sizeof(language[0])) { language[i++] = tolower(*languageChars); language[i++] = tolower(*languageChars); languageChars++; languageChars++; } } Loading @@ -200,7 +200,7 @@ void AaptLocaleValue::setLanguage(const char* languageChars) { void AaptLocaleValue::setRegion(const char* regionChars) { void AaptLocaleValue::setRegion(const char* regionChars) { size_t i = 0; size_t i = 0; while ((*regionChars) != '\0') { while ((*regionChars) != '\0' && i < sizeof(region)/sizeof(region[0])) { region[i++] = toupper(*regionChars); region[i++] = toupper(*regionChars); regionChars++; regionChars++; } } Loading @@ -208,7 +208,7 @@ void AaptLocaleValue::setRegion(const char* regionChars) { void AaptLocaleValue::setScript(const char* scriptChars) { void AaptLocaleValue::setScript(const char* scriptChars) { size_t i = 0; size_t i = 0; while ((*scriptChars) != '\0') { while ((*scriptChars) != '\0' && i < sizeof(script)/sizeof(script[0])) { if (i == 0) { if (i == 0) { script[i++] = toupper(*scriptChars); script[i++] = toupper(*scriptChars); } else { } else { Loading @@ -220,7 +220,7 @@ void AaptLocaleValue::setScript(const char* scriptChars) { void AaptLocaleValue::setVariant(const char* variantChars) { void AaptLocaleValue::setVariant(const char* variantChars) { size_t i = 0; size_t i = 0; while ((*variantChars) != '\0') { while ((*variantChars) != '\0' && i < sizeof(variant)/sizeof(variant[0])) { variant[i++] = *variantChars; variant[i++] = *variantChars; variantChars++; variantChars++; } } Loading
tools/aapt/Command.cpp +9 −4 Original line number Original line Diff line number Diff line Loading @@ -196,11 +196,16 @@ int doList(Bundle* bundle) goto bail; goto bail; } } #ifdef HAVE_ANDROID_OS static const bool kHaveAndroidOs = true; #else static const bool kHaveAndroidOs = false; #endif const ResTable& res = assets.getResources(false); const ResTable& res = assets.getResources(false); #ifndef HAVE_ANDROID_OS if (!kHaveAndroidOs) { printf("\nResource table:\n"); printf("\nResource table:\n"); res.print(false); res.print(false); #endif } Asset* manifestAsset = assets.openNonAsset("AndroidManifest.xml", Asset* manifestAsset = assets.openNonAsset("AndroidManifest.xml", Asset::ACCESS_BUFFER); Asset::ACCESS_BUFFER); Loading
tools/aapt/Images.cpp +37 −21 Original line number Original line Diff line number Diff line Loading @@ -1095,6 +1095,41 @@ static void write_png(const char* imageName, } } } } static bool read_png_protected(png_structp read_ptr, String8& printableName, png_infop read_info, const sp<AaptFile>& file, FILE* fp, image_info* imageInfo) { if (setjmp(png_jmpbuf(read_ptr))) { return false; } png_init_io(read_ptr, fp); read_png(printableName.string(), read_ptr, read_info, imageInfo); const size_t nameLen = file->getPath().length(); if (nameLen > 6) { const char* name = file->getPath().string(); if (name[nameLen-5] == '9' && name[nameLen-6] == '.') { if (do_9patch(printableName.string(), imageInfo) != NO_ERROR) { return false; } } } return true; } static bool write_png_protected(png_structp write_ptr, String8& printableName, png_infop write_info, image_info* imageInfo, const Bundle* bundle) { if (setjmp(png_jmpbuf(write_ptr))) { return false; } write_png(printableName.string(), write_ptr, write_info, *imageInfo, bundle->getGrayscaleTolerance()); return true; } status_t preProcessImage(const Bundle* bundle, const sp<AaptAssets>& /* assets */, status_t preProcessImage(const Bundle* bundle, const sp<AaptAssets>& /* assets */, const sp<AaptFile>& file, String8* /* outNewLeafName */) const sp<AaptFile>& file, String8* /* outNewLeafName */) { { Loading Loading @@ -1126,8 +1161,6 @@ status_t preProcessImage(const Bundle* bundle, const sp<AaptAssets>& /* assets * status_t error = UNKNOWN_ERROR; status_t error = UNKNOWN_ERROR; const size_t nameLen = file->getPath().length(); fp = fopen(file->getSourceFile().string(), "rb"); fp = fopen(file->getSourceFile().string(), "rb"); if (fp == NULL) { if (fp == NULL) { fprintf(stderr, "%s: ERROR: Unable to open PNG file\n", printableName.string()); fprintf(stderr, "%s: ERROR: Unable to open PNG file\n", printableName.string()); Loading @@ -1145,22 +1178,9 @@ status_t preProcessImage(const Bundle* bundle, const sp<AaptAssets>& /* assets * goto bail; goto bail; } } if (setjmp(png_jmpbuf(read_ptr))) { if (!read_png_protected(read_ptr, printableName, read_info, file, fp, &imageInfo)) { goto bail; } png_init_io(read_ptr, fp); read_png(printableName.string(), read_ptr, read_info, &imageInfo); if (nameLen > 6) { const char* name = file->getPath().string(); if (name[nameLen-5] == '9' && name[nameLen-6] == '.') { if (do_9patch(printableName.string(), &imageInfo) != NO_ERROR) { goto bail; goto bail; } } } } write_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, 0, (png_error_ptr)NULL, write_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, 0, (png_error_ptr)NULL, (png_error_ptr)NULL); (png_error_ptr)NULL); Loading @@ -1178,14 +1198,10 @@ status_t preProcessImage(const Bundle* bundle, const sp<AaptAssets>& /* assets * png_set_write_fn(write_ptr, (void*)file.get(), png_set_write_fn(write_ptr, (void*)file.get(), png_write_aapt_file, png_flush_aapt_file); png_write_aapt_file, png_flush_aapt_file); if (setjmp(png_jmpbuf(write_ptr))) if (!write_png_protected(write_ptr, printableName, write_info, &imageInfo, bundle)) { { goto bail; goto bail; } } write_png(printableName.string(), write_ptr, write_info, imageInfo, bundle->getGrayscaleTolerance()); error = NO_ERROR; error = NO_ERROR; if (bundle->getVerbose()) { if (bundle->getVerbose()) { Loading
tools/aapt/XMLNode.cpp +1 −1 Original line number Original line Diff line number Diff line Loading @@ -989,7 +989,7 @@ status_t XMLNode::assignResourceIds(const sp<AaptAssets>& assets, for (size_t i=0; i<N; i++) { for (size_t i=0; i<N; i++) { const attribute_entry& e = mAttributes.itemAt(i); const attribute_entry& e = mAttributes.itemAt(i); if (e.ns.size() <= 0) continue; if (e.ns.size() <= 0) continue; bool nsIsPublic; bool nsIsPublic = true; String16 pkg(getNamespaceResourcePackage(String16(assets->getPackage()), e.ns, &nsIsPublic)); String16 pkg(getNamespaceResourcePackage(String16(assets->getPackage()), e.ns, &nsIsPublic)); if (kIsDebug) { if (kIsDebug) { printf("Elem %s %s=\"%s\": namespace(%s) %s ===> %s\n", printf("Elem %s %s=\"%s\": namespace(%s) %s ===> %s\n", Loading