Phill
Phill

Reputation: 393

multiple AuthorizationExecuteWithPrivileges

My application needs authentication to write to the hosts file. I can do this using the following bit of code, that I call. My problem is that when sometimes the user will need to make this change more than once in that instance of the program - the warning dialog asking for the password only appears the first time this is called, and even though the function is called again later, the password request does not show. Can anyone shed any light into this? thanks.

- (void)someFunction {
    AuthorizationRef authorizationRef;
    OSStatus status;
    status = AuthorizationCreate(NULL, kAuthorizationEmptyEnvironment,
         kAuthorizationFlagDefaults, &authorizationRef);

    //Run the tool using the authorization reference
    char *tool = "/bin/mv";
    char *args[] = { "-f", "/tmp/hosts", "/etc/hosts" };
    FILE *pipe = NULL;
    status = AuthorizationExecuteWithPrivileges(authorizationRef,
           tool, kAuthorizationFlagDefaults, args, &pipe);
}

Upvotes: 1

Views: 675

Answers (1)

alfred
alfred

Reputation: 217

If you want to force re-authentication you should call

    status = AuthorizationFree (authorizationRef, kAuthorizationFlagDestroyRights);

after AuthorizationExecuteWithPrivileges

Upvotes: 2

Related Questions