Commit 8b0062ec authored by Greg Williams's avatar Greg Williams
Browse files

Fixed leak of protobuf ACLs upon completion of KineticAdminClient_SetACL

parent 083b1bd2
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -20,7 +20,7 @@
#ifndef KINETIC_ACL_H
#define KINETIC_ACL_H

#include "acl_types.h"
#include "kinetic_acl_types.h"
#include "kinetic_proto.h"

/* Attempt to instantiate an ACL structure based on the JSON data
+3 −3
Original line number Diff line number Diff line
#ifndef ACL_TYPES_H
#define ACL_TYPES_H
#ifndef KINETIC_ACL_TYPES_H
#define KINETIC_ACL_TYPES_H

#include <stdlib.h>
#include <stdint.h>
@@ -37,4 +37,4 @@ typedef enum {
    ACL_ERROR_INVALID_FIELD = -6,
} KineticACLLoadResult;

#endif
#endif // KINETIC_ACL_TYPES_H
+2 −1
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@
#include "kinetic_allocator.h"
#include "kinetic_logger.h"
#include "kinetic_request.h"
#include "kinetic_acl.h"
#include "kinetic_callbacks.h"

#include <stdlib.h>
@@ -410,7 +411,7 @@ KineticStatus KineticBuilder_BuildSetACL(KineticOperation* const op,
    op->request->command->body->security->n_acl = ACLs->ACL_count;
    op->request->command->body->security->acl = ACLs->ACLs;

    op->callback = &KineticCallbacks_Basic;
    op->callback = &KineticCallbacks_SetACL;
    op->timeoutSeconds = KineticOperation_TimeoutSetACL;

    return KINETIC_STATUS_SUCCESS;
+19 −0
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@
#include "kinetic_allocator.h"
#include "kinetic_logger.h"
#include "kinetic_request.h"
#include "kinetic_acl.h"

#include <stdlib.h>
#include <errno.h>
@@ -220,6 +221,24 @@ KineticStatus KineticCallbacks_SetClusterVersion(KineticOperation* const operati
    return status;
}

KineticStatus KineticCallbacks_SetACL(KineticOperation* const operation, KineticStatus const status)
{
    KINETIC_ASSERT(operation != NULL);
    KINETIC_ASSERT(operation->connection != NULL);
    if (operation->request != NULL &&
        operation->request->command != NULL &&
        operation->request->command->body != NULL &&
        operation->request->command->body->security != NULL &&
        operation->request->command->body->security->acl != NULL)
    {
        struct ACL* acls = calloc(1, sizeof(struct ACL));
        acls->ACL_count = operation->request->command->body->security->n_acl,
        acls->ACLs = operation->request->command->body->security->acl,
        KineticACL_Free(acls);
    }
    return status;
}

KineticStatus KineticCallbacks_UpdateFirmware(KineticOperation* const operation, KineticStatus const status)
{
    KINETIC_ASSERT(operation != NULL);
+1 −0
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@ KineticStatus KineticCallbacks_P2POperation(KineticOperation* const operation, K
*******************************************************************************/
KineticStatus KineticCallbacks_GetLog(KineticOperation* const operation, KineticStatus const status);
KineticStatus KineticCallbacks_SetClusterVersion(KineticOperation* const operation, KineticStatus const status);
KineticStatus KineticCallbacks_SetACL(KineticOperation* const operation, KineticStatus const status);
KineticStatus KineticCallbacks_UpdateFirmware(KineticOperation* const operation, KineticStatus const status);

#endif // _KINETIC_CALLBACKS_H
Loading