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

test

parent eb1d5581
Loading
Loading
Loading
Loading
Loading
+36 −17
Changes for src/admin.cpp: 36 added lines, 17 removed lines.
Original line number Diff line number Diff line
@@ -152,9 +152,12 @@ namespace authdb {

            while (rd < end) {
                cur->type = EmptyData;
                if (rd + sizeof(AuthData::Record) > end) break;
                backend->setPos(rd);
                backend->read((unsigned char*)cur.get(), sizeof(AuthData::Record));
                rd = backend->getPos() + cur->datasize;
                size_t next = backend->getPos() + cur->datasize;
                if (next < backend->getPos() || next > end) break;
                rd = next;

                if (cur->type == UserData && strcmp(cur->fieldname, "username") == 0) {
                    class UserData udat(cur->ruid);
@@ -193,11 +196,13 @@ namespace authdb {
            json_object *jfields = json_object_new_array();

            size_t rd = sizeof(authdb::AuthHeader), end = backend->end();
            while (rd < end) {
            while (rd + sizeof(AuthData::Record) <= end) {
                std::shared_ptr<authdb::AuthData::Record> cur = std::make_shared<authdb::AuthData::Record>();
                backend->setPos(rd);
                backend->read((unsigned char*)cur.get(), sizeof(AuthData::Record));
                rd = backend->getPos() + cur->datasize;
                size_t next = backend->getPos() + cur->datasize;
                if (next < backend->getPos() || next > end) break;
                rd = next;

                if (uid == cur->ruid && cur->type == UserData && cur->storage == TextStorage) {
                    cur->data = new char[cur->datasize];
@@ -880,11 +885,13 @@ namespace authdb {
            Group group;
            size_t rd = sizeof(authdb::AuthHeader), end = backend->end();

            while (rd < end) {
            while (rd + sizeof(AuthData::Record) <= end) {
                std::shared_ptr<authdb::AuthData::Record> cur = std::make_shared<authdb::AuthData::Record>();
                backend->setPos(rd);
                backend->read((unsigned char*)cur.get(), sizeof(AuthData::Record));
                rd = backend->getPos() + cur->datasize;
                size_t next = backend->getPos() + cur->datasize;
                if (next < backend->getPos() || next > end) break;
                rd = next;

                if (cur->type == GroupData && strcmp(cur->fieldname, "groupname") == 0) {
                    class GroupData gdat(cur->ruid);
@@ -936,11 +943,13 @@ namespace authdb {
            // All users (for selection)
            json_object *jallusers = json_object_new_array();
            size_t rd = sizeof(authdb::AuthHeader), end = backend->end();
            while (rd < end) {
            while (rd + sizeof(AuthData::Record) <= end) {
                std::shared_ptr<authdb::AuthData::Record> cur = std::make_shared<authdb::AuthData::Record>();
                backend->setPos(rd);
                backend->read((unsigned char*)cur.get(), sizeof(AuthData::Record));
                rd = backend->getPos() + cur->datasize;
                size_t next = backend->getPos() + cur->datasize;
                if (next < backend->getPos() || next > end) break;
                rd = next;
                if (cur->type == UserData && cur->storage == TextStorage && strcmp(cur->fieldname, "username") == 0) {
                    cur->data = new char[cur->datasize];
                    backend->read((unsigned char*)cur->data, cur->datasize);
@@ -1132,12 +1141,14 @@ namespace authdb {
            Gpo gpo;
            size_t rd = sizeof(authdb::AuthHeader), end = backend->end();

            while (rd < end) {
            while (rd + sizeof(AuthData::Record) <= end) {
                std::shared_ptr<authdb::AuthData::Record> cur = std::make_shared<authdb::AuthData::Record>();
                cur->type = EmptyData;
                backend->setPos(rd);
                backend->read((unsigned char*)cur.get(), sizeof(AuthData::Record));
                rd = backend->getPos() + cur->datasize;
                size_t next = backend->getPos() + cur->datasize;
                if (next < backend->getPos() || next > end) break;
                rd = next;

                if (cur->type == PolicyData && strcmp(cur->fieldname, "gponame") == 0) {
                    class GpoData gdat(cur->ruid);
@@ -1206,11 +1217,13 @@ namespace authdb {
            // All groups
            json_object *jallgroups = json_object_new_array();
            size_t rd = sizeof(AuthHeader), end = backend->end();
            while (rd < end) {
            while (rd + sizeof(AuthData::Record) <= end) {
                AuthData::Record cur;
                backend->setPos(rd);
                backend->read((unsigned char*)&cur, sizeof(AuthData::Record));
                rd = backend->getPos() + cur.datasize;
                size_t next = backend->getPos() + cur.datasize;
                if (next < backend->getPos() || next > end) break;
                rd = next;
                if (cur.type == GroupData && strcmp(cur.fieldname, "groupname") == 0) {
                    cur.data = new char[cur.datasize];
                    backend->read((unsigned char*)cur.data, cur.datasize);
@@ -1359,12 +1372,14 @@ namespace authdb {
            ServiceManager svcmgr;
            size_t rd = sizeof(authdb::AuthHeader), end = backend->end();

            while (rd < end) {
            while (rd + sizeof(authdb::AuthData::Record) <= end) {
                std::shared_ptr<authdb::AuthData::Record> cur = std::make_shared<authdb::AuthData::Record>();
                cur->type = EmptyData;
                backend->setPos(rd);
                backend->read((unsigned char*)cur.get(), sizeof(authdb::AuthData::Record));
                rd = backend->getPos() + cur->datasize;
                size_t next = backend->getPos() + cur->datasize;
                if (next < backend->getPos() || next > end) break;
                rd = next;

                if (cur->type == ServiceData && std::string(cur->fieldname) == "servicename") {
                    try {
@@ -1624,12 +1639,14 @@ namespace authdb {
            Client clt;
            size_t rd = sizeof(authdb::AuthHeader), end = backend->end();

            while (rd < end) {
            while (rd + sizeof(authdb::AuthData::Record) <= end) {
                std::shared_ptr<authdb::AuthData::Record> cur = std::make_shared<authdb::AuthData::Record>();
                cur->type = EmptyData;
                backend->setPos(rd);
                backend->read((unsigned char*)cur.get(), sizeof(authdb::AuthData::Record));
                rd = backend->getPos() + cur->datasize;
                size_t next = backend->getPos() + cur->datasize;
                if (next < backend->getPos() || next > end) break;
                rd = next;

                if (cur->type == ClientData && std::string(cur->fieldname) == "clientname") {
                    try {
@@ -1896,12 +1913,14 @@ namespace authdb {
            User user;
            size_t rd = sizeof(authdb::AuthHeader), end = backend->end();

            while (rd < end) {
            while (rd + sizeof(AuthData::Record) <= end) {
                std::shared_ptr<authdb::AuthData::Record> cur = std::make_shared<authdb::AuthData::Record>();
                cur->type = EmptyData;
                backend->setPos(rd);
                backend->read((unsigned char*)cur.get(), sizeof(AuthData::Record));
                rd = backend->getPos() + cur->datasize;
                size_t next = backend->getPos() + cur->datasize;
                if (next < backend->getPos() || next > end) break;
                rd = next;

                if (cur->type == UserData && strcmp(cur->fieldname, "username") == 0) {
                    class UserData udat(cur->ruid);
+4 −2
Changes for src/authdb.cpp: 4 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -414,11 +414,13 @@ namespace authdb {

            size_t rd=sizeof(authdb::AuthHeader),end=backend->end();

            while(rd<end){
            while(rd+sizeof(AuthData::Record)<=end){
                std::shared_ptr <authdb::AuthData::Record> cur=std::make_shared<authdb::AuthData::Record>();
                backend->setPos(rd);
                backend->read((unsigned char*)cur.get(),sizeof(AuthData::Record));
                rd=backend->getPos()+cur->datasize;
                size_t next=backend->getPos()+cur->datasize;
                if(next<backend->getPos() || next>end) break;
                rd=next;

                if(uid==cur->ruid && strcmp(cur->fieldname,"avatar")==0){
                    cur->data = new char[cur->datasize];
+8 −4
Changes for src/data.cpp: 8 added lines, 4 removed lines.
Original line number Diff line number Diff line
@@ -93,11 +93,13 @@ namespace authdb {
        bool found=false;
        int rd=sizeof(authdb::AuthHeader),end=backend.end();

        while(rd<end){
        while(rd+sizeof(AuthData::Record)<=end){
            std::shared_ptr<AuthData::Record> cur=std::make_shared<AuthData::Record>();
            backend.setPos(rd);
            backend.read(reinterpret_cast<unsigned char*>(cur.get()),sizeof(AuthData::Record));
            rd=backend.getPos()+cur->datasize;
            size_t next=backend.getPos()+cur->datasize;
            if(next<(size_t)backend.getPos() || next>(size_t)end) break;
            rd=next;
            if(uuid::uuid(cur->ruid)==rec.Data.ruid && cur->type == type){
                cur->data=new char[cur->datasize];
                backend.read(reinterpret_cast<unsigned char*>(cur->data),cur->datasize);
@@ -210,12 +212,14 @@ namespace authdb {

        size_t end=backend.end(),rd=sizeof(AuthHeader);

        while(rd<end){
        while(rd+sizeof(AuthData::Record)<=end){
            std::shared_ptr<authdb::AuthData::Record> cur=std::make_shared<authdb::AuthData::Record>();
            backend.setPos(rd);
            size_t wr=backend.getPos();
            backend.read(reinterpret_cast<unsigned char*>(cur.get()),sizeof(AuthData::Record));
            rd=backend.getPos()+cur->datasize;
            size_t next=backend.getPos()+cur->datasize;
            if(next<(size_t)backend.getPos() || next>(size_t)end) break;
            rd=next;
            if(uid==cur->ruid && type == cur->type){
                std::cout << cur->datasize << std::endl;
                memset(cur->ruid,0,sizeof(uuid::uuid_t));
+12 −6
Changes for src/domain.cpp: 12 added lines, 6 removed lines.
Original line number Diff line number Diff line
@@ -92,10 +92,12 @@ void authdb::Domain::remove(AuthBackend& backend, const uuid::uuid &uid){

    size_t rd=sizeof(authdb::AuthHeader),end=backend.end();

    while(rd<end){
    while(rd+sizeof(AuthData::Record)<=end){
        backend.setPos(rd);
        backend.read((unsigned char*)&cur,sizeof(AuthData::Record));
        rd=backend.getPos()+cur.datasize;
        size_t next=backend.getPos()+cur.datasize;
        if(next<backend.getPos() || next>end) break;
        rd=next;
        if( uid==cur.ruid &&
            cur.type==DataType::DomainData &&
            strcmp(cur.fieldname,"domainoptions")==0){
@@ -119,10 +121,12 @@ bool authdb::Domain::exits(AuthBackend& backend,const uuid::uuid& did, const std

    size_t rd=sizeof(authdb::AuthHeader),end=backend.end();

    while(rd<end){
    while(rd+sizeof(AuthData::Record)<=end){
        backend.setPos(rd);
        backend.read((unsigned char*)&cur,sizeof(AuthData::Record));
        rd=backend.getPos()+cur.datasize;
        size_t next=backend.getPos()+cur.datasize;
        if(next<backend.getPos() || next>end) break;
        rd=next;
        if(cur.type==DataType::DomainData && strcmp(cur.fieldname,"domainname")==0){
            cur.data=new char[cur.datasize];
            backend.read((unsigned char*)cur.data,cur.datasize);
@@ -181,13 +185,15 @@ namespace authdb {
        DomainInfo info;
        size_t rd=sizeof(authdb::AuthHeader),end=_adminbck.end();

        while(rd<end){
        while(rd+sizeof(AuthData::Record)<=end){
            authdb::AuthData::Record cur;

            _adminbck.setPos(rd);
            _adminbck.read((unsigned char*)&cur,sizeof(AuthData::Record));

            rd=_adminbck.getPos()+cur.datasize;
            size_t next=_adminbck.getPos()+cur.datasize;
            if(next<_adminbck.getPos() || next>end) break;
            rd=next;

            if(did == cur.ruid && cur.type == DataType::DomainData &&
                strcmp(cur.fieldname,"domainname")==0){