Skip to content

SDK crashes App when empty response delivered by the server #41

Description

@hoffmannjoern

The + (NSError *)authenticationErrorForResponse:(NSDictionary *)response in BaasBox.m
crashes.

Reason (original code below):

  • (NSError *)authenticationErrorForResponse:(NSDictionary *)response {
    if (response == nil) {
    NSDictionary *errorDetail = @{NSLocalizedDescriptionKey:@"Server returned an empty response.",
    @"BaasBox API Version": @[response[@"API_version"]],
    // ---> KV coding an dictionary cannot save a nil reference and response and so the requested object is nil !!!

                                  @"iOS SDK Version" : VERSION};
    return [NSError errorWithDomain:[BaasBox errorDomain]
                               code:-22222
                           userInfo:errorDetail];
    

    }

    NSDictionary *errorDetail = @{NSLocalizedDescriptionKey:response[@"message"],
    @"BaasBox_API_version": @[response[@"API_version"]],
    @"iOS SDK Version" : VERSION};
    NSError *error = [NSError errorWithDomain:[BaasBox errorDomain]
    code:-22222
    userInfo:errorDetail];
    return error;
    }

Consider the following fix, wich will in addition make the code more compact and readable:

  • (NSError *)authenticationErrorForResponse:(NSDictionary *)response
    {
    NSString *message = response[@"message"] ? response[@"message"] : @"Server returned an empty response.";
    NSString *apiVersion = response[@"API_version"] ? response[@"API_version"] : @"unknown";

    NSDictionary *errorDetail = @{NSLocalizedDescriptionKey:message,
    @"BaasBox API Version": apiVersion,
    @"iOS SDK Version" : VERSION};

    NSError *error = [NSError errorWithDomain:[BaasBox errorDomain]
    code:-22222
    userInfo:errorDetail];
    return error;
    }

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions