From 50533d793ed58da2f12e16dee6c88fecf5d0bd68 Mon Sep 17 00:00:00 2001 From: Xyc0 Date: Mon, 27 Jun 2016 23:54:47 +0000 Subject: [PATCH] eh, moving out of cloud9 --- .clang-format | 6 +- sins.cpp | 202 +++++++++++++++++++++++++++----------------------- wscript | 7 +- 3 files changed, 115 insertions(+), 100 deletions(-) diff --git a/.clang-format b/.clang-format index 6f503b5..250319f 100644 --- a/.clang-format +++ b/.clang-format @@ -20,7 +20,7 @@ BreakBeforeTernaryOperators: true BreakConstructorInitializersBeforeComma: false BinPackParameters: true BinPackArguments: true -ColumnLimit: 80 +ColumnLimit: 120 ConstructorInitializerAllOnOneLineOrOnePerLine: false ConstructorInitializerIndentWidth: 4 DerivePointerAlignment: false @@ -31,7 +31,7 @@ IndentFunctionDeclarationAfterType: false MaxEmptyLinesToKeep: 1 KeepEmptyLinesAtTheStartOfBlocks: true NamespaceIndentation: None -ObjCBlockIndentWidth: 4 +ObjCBlockIndentWidth: 2 ObjCSpaceAfterProperty: false ObjCSpaceBeforeProtocolList: true PenaltyBreakBeforeFirstCallParameter: 19 @@ -45,7 +45,7 @@ SpacesBeforeTrailingComments: 1 Cpp11BracedListStyle: true Standard: Cpp11 IndentWidth: 4 -TabWidth: 8 +TabWidth: 4 UseTab: Never BreakBeforeBraces: Allman SpacesInParentheses: false diff --git a/sins.cpp b/sins.cpp index 09485db..16fd97f 100644 --- a/sins.cpp +++ b/sins.cpp @@ -16,113 +16,129 @@ #define SHA_SUM_LENGTH (SHA_DIGEST_LENGTH + SHA_DIGEST_LENGTH + 1) -void picProto(void *picAddr, size_t picSize, void *clonePtr) { - void (*cloneFunc)(void *, size_t, char *) = clonePtr; - cloneFunc(picAddr, picSize); - return; +void picProto(void *picAddr, size_t picSize, void *clonePtr) +{ + void (*cloneFunc)(void *, size_t) = clonePtr; + cloneFunc(picAddr, picSize); + return; } -void clone(void *picAddr, size_t picSize, char *checksum) { - auto retVal = EX_SOFTWARE; +void clone(void *picAddr, size_t picSize) +{ + auto retVal = EX_SOFTWARE; - struct drand48_data drand_data; - srand48_r(time(NULL), &drand_data); - long int randVal; - lrand48_r(&drand_data, &randVal); + struct drand48_data drand_data; + srand48_r(time(NULL), &drand_data); + long int randVal; + lrand48_r(&drand_data, &randVal); - unsigned int picOffset = (randVal % (picSize + 1)); - unsigned char picFlip = ((char *)picAddr)[picOffset] & (randVal % 2); + unsigned int picOffset = (randVal % (picSize + 1)); + unsigned char picFlip = ((char *)picAddr)[picOffset] & (randVal % 2); - printf("%x\t%x\n", picOffset, picFlip); + printf("%x\t%x\n", picOffset, picFlip); - ((char *)picAddr)[picOffset] = picFlip; + ((char *)picAddr)[picOffset] = picFlip; - unsigned char digest[SHA_DIGEST_LENGTH]; - SHA1(picAddr, picSize, digest); + unsigned char digest[SHA_DIGEST_LENGTH]; + SHA1(picAddr, picSize, digest); - for (int iter = 0; iter < SHA_DIGEST_LENGTH; iter++) { - sprintf(&checksum[iter * 2], "%02x", digest[iter]); - } - - FILE *fileOutHandle = fopen(checksum, "w+"); - if (NULL == fileOutHandle) { - retVal = errno; - goto CLONE_CLEANUP; - } - - retVal = fwrite(picAddr, 1, picSize, fileOutHandle); - if (retVal != picSize) { - retVal = errno; - goto CLONE_CLEANUP; - } - - retVal = EX_OK; -CLONE_CLEANUP: - if (fileOutHandle) { - fclose(fileOutHandle); - } - return; -} - -int main(int argc, const char **argv) { - auto retVal = EX_SOFTWARE; - char fileInPath[SHA_SUM_LENGTH]; - char checksum[SHA_SUM_LENGTH]; - - strncpy(fileInPath, argv[1], SHA_SUM_LENGTH); - - while (1) { - - FILE *fileInHandle = fopen(fileInPath, "rb"); - if (NULL == fileInHandle) { - retVal = errno; - goto MAIN_CLEANUP; + for (int iter = 0; iter < SHA_DIGEST_LENGTH; iter++) + { + sprintf(&checksum[iter * 2], "%02x", digest[iter]); } - struct stat picStat; - retVal = fstat(fileno(fileInHandle), &picStat); - if (-1 == retVal) { - retVal = errno; - goto MAIN_CLEANUP; + FILE *fileOutHandle = fopen(checksum, "w+"); + if (NULL == fileOutHandle) + { + retVal = errno; + goto CLONE_CLEANUP; } - void *picBuffer = mmap(NULL, picStat.st_size, PROT_READ | PROT_WRITE | PROT_EXEC, MAP_ANON | MAP_PRIVATE, -1, 0); - if (MAP_FAILED == picBuffer) { - retVal = errno; - goto MAIN_CLEANUP; + retVal = fwrite(picAddr, 1, picSize, fileOutHandle); + if (retVal != picSize) + { + retVal = errno; + goto CLONE_CLEANUP; } - retVal = fread(picBuffer, 1, picStat.st_size, fileInHandle); - if (retVal != picStat.st_size) { - retVal = errno; - goto MAIN_CLEANUP; - } - - if (NULL != fileInHandle) { - fclose(fileInHandle); - fileInHandle = NULL; - } - - memset(checksum, 0, SHA_SUM_LENGTH); - void (*cloneFunc)(void *, size_t, char *) = clone; - void (*picFunc)(void *, size_t, void *, char *) = picBuffer; - - signal(SIGSEGV, magic_handler); - - picFunc(picBuffer, picStat.st_size, cloneFunc, checksum); - - strncpy(fileInPath, checksum, SHA_SUM_LENGTH); - retVal = EX_OK; - MAIN_CLEANUP: - if (NULL != picBuffer) { - munmap(picBuffer, picStat.st_size); +CLONE_CLEANUP: + if (fileOutHandle) + { + fclose(fileOutHandle); } - if (NULL != fileInHandle) { - fclose(fileInHandle); - fileInHandle = NULL; - } - } - - return retVal; + return; } + +int main(int argc, const char **argv) +{ + auto retVal = EX_SOFTWARE; + char fileInPath[SHA_SUM_LENGTH]; + char checksum[SHA_SUM_LENGTH]; + FILE *fileInHandle = NULL; + struct stat picStat; + void *picBuffer = NULL; + + strncpy(fileInPath, argv[1], SHA_SUM_LENGTH); + + while (1) + { + + fileInHandle = fopen(fileInPath, "rb"); + if (NULL == fileInHandle) + { + retVal = errno; + goto MAIN_CLEANUP; + } + + retVal = fstat(fileno(fileInHandle), &picStat); + if (-1 == retVal) + { + retVal = errno; + goto MAIN_CLEANUP; + } + + auto mmapFlags = (PROT_READ | PROT_WRITE | PROT_EXEC, MAP_ANON | MAP_PRIVATE); + picBuffer = mmap(NULL, picStat.st_size, mmapFlags, -1, 0); + if (MAP_FAILED == picBuffer) + { + retVal = errno; + goto MAIN_CLEANUP; + } + + retVal = fread(picBuffer, 1, picStat.st_size, fileInHandle); + if (retVal != picStat.st_size) + { + retVal = errno; + goto MAIN_CLEANUP; + } + + if (NULL != fileInHandle) + { + fclose(fileInHandle); + fileInHandle = NULL; + } + + memset(checksum, 0, SHA_SUM_LENGTH); + void (*cloneFunc)(void *, size_t) = clone; + void (*picFunc)(void *, size_t, void *) = picBuffer; + + picFunc(picBuffer, picStat.st_size, cloneFunc); + + strncpy(fileInPath, checksum, SHA_SUM_LENGTH); + } + + retVal = EX_OK; +MAIN_CLEANUP: + if (NULL != picBuffer) + { + munmap(picBuffer, picStat.st_size); + } + if (NULL != fileInHandle) + { + fclose(fileInHandle); + fileInHandle = NULL; + } + + return retVal; +} \ No newline at end of file diff --git a/wscript b/wscript index b054541..db1db9c 100644 --- a/wscript +++ b/wscript @@ -3,13 +3,12 @@ def options(opt): opt.load('nasm') - opt.load('compiler_c') + opt.load('compiler_cxx') def configure(conf): conf.load('nasm') - conf.load('compiler_c') + conf.load('compiler_cxx') def build(bld): - bld.program(source='pic-linux.c', target='pic-linux', cflags='-g') - bld.program(source='sins.c', target='sins', cflags='-g') + bld.program(source='sins.cpp', target='sins', cflags='-g') bld(features='asm', source='scrap.asm', target='scrap')