Loading CMakeLists.txt +2 −1 Original line number Diff line number Diff line project(secureid C) cmake_minimum_required(VERSION 3.0) project(secureid C) enable_testing () set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-int-conversion") Loading src/secureid.c +7 −7 Original line number Diff line number Diff line Loading @@ -107,6 +107,7 @@ void initSID(struct SID **sid){ }; void destroySID(struct SID *sid){ if(sid->SubAuthorityCount!=0) munmap32(sid->SubAuthority[1],(sizeof(uint32_t)*sid->SubAuthorityCount)); munmap32(sid,sizeof(struct SID)); }; Loading Loading @@ -186,19 +187,16 @@ int parseSID(struct SID *sid,const char *input,int size){ for (iis= 0; iis < ssize - 1; ++iis) { ++i; for(ia=1; input[i+ia]!='-'; ++ia){ if(i+ia==size) break; } for(ia=0; i+ia<size && input[i+ia]!='-'; ++ia); sid->SubAuthority[iis]=string2uint32_t(input+i,ia); i+=ia; } return 0; return sid->SubAuthorityCount; }; int printSID(struct SID *sid,char *input,int size){ int written = 0; input[written++]="S"; input[written++]='S'; input[written++]='-'; input[written++]=sid->Revesion+'0'; input[written++]='-'; Loading @@ -223,6 +221,8 @@ int printSID(struct SID *sid,char *input,int size){ written += ctt; for (int ii = 0; ii < (sid->SubAuthorityCount/sizeof(uint32_t))-1; ++ii) { if(written>size) break; input[written++]='-'; char tmp[255]; uint32_t wt=uint32_t2string(sid->SubAuthority[ii],tmp,10); Loading test/CMakeLists.txt +3 −0 Original line number Diff line number Diff line add_executable(parse parse.c) target_link_libraries(parse secureid) add_test(NAME parse COMMAND parse "${CMAKE_SOURCE_DIR}/test/sid.txt") set_tests_properties(parse PROPERTIES WILL_FAIL TRUE) test/parse.c +49 −9 Original line number Diff line number Diff line Loading @@ -30,20 +30,60 @@ #include "secureid.h" #define MYSID "S-1-5-21-3686201514-2077471124-1704617262-1104" #define _POSIX_C_SOURCE 200809L int main(int argc, char *argv[]){ struct SID *sid; initSID(&sid); parseSID(sid,MYSID,strlen(MYSID)); int read=0; if(argc!=2){ printf("no file path argument append !"); return -1; } FILE *list; list=fopen(argv[1],"r"); if(list==0){ printf("cannot open file !"); return -1; } int failed=0; char test[512]; while(read==0){ char line[512],out[512]; int spos=0,written=0;; for(spos=fgetc(list); spos!='\n'; spos=fgetc(list)){ if(written > 511){ printf("line too long aborting"); failed=-1; } if(feof(list)){ read=-1; break; } line[written++]=spos; } if(written==0) return 0; printSID(sid,test,512); line[written]='\0'; printf("%s\n",test); struct SID *sid; initSID(&sid); printf("%s\n",MYSID); int ret=parseSID(sid,line,written); if(ret!=-1) printSID(sid,out,512); destroySID(sid); if(ret!=-1 && strcmp(line,out)==0){ printf("Success: %s \n",out); continue; } printf("Failed: %s \n",line); failed = -1; } return failed; } test/sid.txt +2 −1 Original line number Diff line number Diff line 21-7623811015-3361044348-030300820 S-1-5-21-3686201514-2077471124-1704617262-1104 S-1-0-0 Loading
CMakeLists.txt +2 −1 Original line number Diff line number Diff line project(secureid C) cmake_minimum_required(VERSION 3.0) project(secureid C) enable_testing () set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-int-conversion") Loading
src/secureid.c +7 −7 Original line number Diff line number Diff line Loading @@ -107,6 +107,7 @@ void initSID(struct SID **sid){ }; void destroySID(struct SID *sid){ if(sid->SubAuthorityCount!=0) munmap32(sid->SubAuthority[1],(sizeof(uint32_t)*sid->SubAuthorityCount)); munmap32(sid,sizeof(struct SID)); }; Loading Loading @@ -186,19 +187,16 @@ int parseSID(struct SID *sid,const char *input,int size){ for (iis= 0; iis < ssize - 1; ++iis) { ++i; for(ia=1; input[i+ia]!='-'; ++ia){ if(i+ia==size) break; } for(ia=0; i+ia<size && input[i+ia]!='-'; ++ia); sid->SubAuthority[iis]=string2uint32_t(input+i,ia); i+=ia; } return 0; return sid->SubAuthorityCount; }; int printSID(struct SID *sid,char *input,int size){ int written = 0; input[written++]="S"; input[written++]='S'; input[written++]='-'; input[written++]=sid->Revesion+'0'; input[written++]='-'; Loading @@ -223,6 +221,8 @@ int printSID(struct SID *sid,char *input,int size){ written += ctt; for (int ii = 0; ii < (sid->SubAuthorityCount/sizeof(uint32_t))-1; ++ii) { if(written>size) break; input[written++]='-'; char tmp[255]; uint32_t wt=uint32_t2string(sid->SubAuthority[ii],tmp,10); Loading
test/CMakeLists.txt +3 −0 Original line number Diff line number Diff line add_executable(parse parse.c) target_link_libraries(parse secureid) add_test(NAME parse COMMAND parse "${CMAKE_SOURCE_DIR}/test/sid.txt") set_tests_properties(parse PROPERTIES WILL_FAIL TRUE)
test/parse.c +49 −9 Original line number Diff line number Diff line Loading @@ -30,20 +30,60 @@ #include "secureid.h" #define MYSID "S-1-5-21-3686201514-2077471124-1704617262-1104" #define _POSIX_C_SOURCE 200809L int main(int argc, char *argv[]){ struct SID *sid; initSID(&sid); parseSID(sid,MYSID,strlen(MYSID)); int read=0; if(argc!=2){ printf("no file path argument append !"); return -1; } FILE *list; list=fopen(argv[1],"r"); if(list==0){ printf("cannot open file !"); return -1; } int failed=0; char test[512]; while(read==0){ char line[512],out[512]; int spos=0,written=0;; for(spos=fgetc(list); spos!='\n'; spos=fgetc(list)){ if(written > 511){ printf("line too long aborting"); failed=-1; } if(feof(list)){ read=-1; break; } line[written++]=spos; } if(written==0) return 0; printSID(sid,test,512); line[written]='\0'; printf("%s\n",test); struct SID *sid; initSID(&sid); printf("%s\n",MYSID); int ret=parseSID(sid,line,written); if(ret!=-1) printSID(sid,out,512); destroySID(sid); if(ret!=-1 && strcmp(line,out)==0){ printf("Success: %s \n",out); continue; } printf("Failed: %s \n",line); failed = -1; } return failed; }
test/sid.txt +2 −1 Original line number Diff line number Diff line 21-7623811015-3361044348-030300820 S-1-5-21-3686201514-2077471124-1704617262-1104 S-1-0-0