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

importend changes

parent 259a38c8
Loading
Loading
Loading
Loading
+20 −34
Original line number Diff line number Diff line
@@ -102,7 +102,7 @@ __attribute__((visibility("hidden"))) int uint32_t2string(uint32_t num,char* str
void initSID(struct SID **sid){
    *sid=map32(sizeof(struct SID));
    (*sid)->Revesion=1;
    (*sid)->SubAuthorityCount=0;
    (*sid)->SubAuthorityCount=1;
    setAuthority(*sid,NullAccount,0,0);
};

@@ -117,11 +117,9 @@ int SIDcpy(struct SID *dest,struct SID *src){

    int written=0;

    int ssize=src->SubAuthorityCount/sizeof(uint32_t);
    dest->SubAuthority[1]=map32(src->SubAuthorityCount*sizeof(uint32_t));

    dest->SubAuthority[1]=map32(ssize);

    for(int i=0; i<(ssize-1); ++i){
    for(int i=0; i<src->SubAuthorityCount; ++i){
        dest->SubAuthority[i]=src->SubAuthority[i];
    }

@@ -163,30 +161,26 @@ int parseSID(struct SID *sid,const char *input,int size){
        sid->IdentifierAuthority.Value[--e]=input[--ii]-'0';
    }

    int c =++i;

    while( c< (size-i) && input[c++]!='-');

    c=c-i;
    int c =i;

    sid->SubAuthorityCount=string2uint32_t(input+i,--c);

    i+=c;
    while( c< size){
        if(input[c++]=='-')
            ++sid->SubAuthorityCount;
    }

    if(sid->SubAuthorityCount==0)
        return 0;

    sid->SubAuthority[1]=map32(sid->SubAuthorityCount/sizeof(uint32_t));
    sid->SubAuthority[1]=map32(sid->SubAuthorityCount*sizeof(uint32_t));

    int iis,ia,ssize;
    int iis,ia;

    ssize=sid->SubAuthorityCount/sizeof(uint32_t);

    for (iis= 0; iis < ssize - 1; ++iis){
    for (iis= 0; iis < sid->SubAuthorityCount; ++iis){
        sid->SubAuthority[iis]=0;
    }

    for (iis= 0; iis < ssize - 1; ++iis) {
    for (iis= 0; iis < sid->SubAuthorityCount; ++iis) {
        ++i;
        for(ia=0; i+ia<size && input[i+ia]!='-'; ++ia);
        sid->SubAuthority[iis]=string2uint32_t(input+i,ia);
@@ -214,14 +208,7 @@ int printSID(struct SID *sid,char *output,int size){
    if(z==0)
        output[written++]='0';

    output[written++]='-';

    char ct[255];
    uint32_t ctt=uint32_t2string(sid->SubAuthorityCount,ct,10);
    memcpy32(output+written,&ct,ctt);
    written += ctt;
    if(sid->SubAuthorityCount!=0){
        for (int ii = 0; ii <  (sid->SubAuthorityCount/sizeof(uint32_t))-1; ++ii) {
    for (int ii = 0; ii <  sid->SubAuthorityCount; ++ii) {
        if(written>size)
            break;
        output[written++]='-';
@@ -230,7 +217,6 @@ int printSID(struct SID *sid,char *output,int size){
        memcpy32(output+written,&tmp,wt);
        written += wt;
    }
    }
    output[written]='\0';
    return written;
};
+3 −3
Original line number Diff line number Diff line
@@ -73,14 +73,14 @@ int main(int argc, char *argv[]){

        int ret=parseSID(sid,line,written);

        if(ret!=-1)
        if(ret>=0)
            printSID(sid,out,512);
        destroySID(sid);
        if(ret!=-1 && strcmp(line,out)==0){
        if(ret>=0 && strcmp(line,out)==0){
            printf("Success: %s \n",out);
            continue;
        }
        printf("Failed: %s \n",line);
        printf("Failed: %s != %s \n",line,out);
        failed = -1;
    }
    return failed;
+2 −0
Original line number Diff line number Diff line
S-1-5-21-3686201514-2077471124-1704617262-1104
S-1-0-0
S-1-5-32-544
S-1-5-21-1004336348-1177238915-682003330-512