Commit f165b8fa authored by jan.koester's avatar jan.koester
Browse files

some fixes

parent f06a6c90
Loading
Loading
Loading
Loading
+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")

+7 −7
Original line number Diff line number Diff line
@@ -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));
};
@@ -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++]='-';
@@ -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);
+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)
+49 −9
Original line number Diff line number Diff line
@@ -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;
}
+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