diff --git a/components/service/locator/service_name.c b/components/service/locator/service_name.c
index 878b84b..0999787 100644
--- a/components/service/locator/service_name.c
+++ b/components/service/locator/service_name.c
@@ -1,11 +1,11 @@
 /*
- * Copyright (c) 2020, Arm Limited and Contributors. All rights reserved.
+ * Copyright (c) 2020-2021, Arm Limited and Contributors. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
  */
 
+#include <ctype.h>
 #include <string.h>
-#include <stdio.h>
 #include "service_name.h"
 
 /*
@@ -15,14 +15,14 @@
  */
 struct sn_parsed_fields
 {
-    size_t authority_pos;
-    size_t authority_len;
-    size_t service_pos;
-    size_t service_len;
-    size_t version_pos;
-    size_t version_len;
-    size_t instance_pos;
-    size_t instance_len;
+	size_t authority_pos;
+	size_t authority_len;
+	size_t service_pos;
+	size_t service_len;
+	size_t version_pos;
+	size_t version_len;
+	size_t instance_pos;
+	size_t instance_len;
 };
 
 /*
@@ -31,18 +31,18 @@
  */
 static size_t field_len(const char *sn, size_t from, size_t len, char separator)
 {
-    size_t field_len = 0;
-    size_t pos = from;
+	size_t field_len = 0;
+	size_t pos = from;
 
-    while (pos < len) {
+	while (pos < len) {
 
-        if (sn[pos] == separator) break;
+		if (sn[pos] == separator) break;
 
-        ++pos;
-        ++field_len;
-    }
+		++pos;
+		++field_len;
+	}
 
-    return field_len;
+	return field_len;
 }
 
 /*
@@ -51,21 +51,21 @@
  */
 static bool find_next(const char *sn, size_t from, size_t len, char separator, size_t *next)
 {
-    bool found = false;
-    size_t pos = from;
+	bool found = false;
+	size_t pos = from;
 
-    while (pos < len) {
+	while (pos < len) {
 
-        if (sn[pos] == separator) {
-            *next = pos + 1;
-            found = (*next < len);
-            break;
-        }
+		if (sn[pos] == separator) {
+			*next = pos + 1;
+			found = (*next < len);
+			break;
+		}
 
-        ++pos;
-    }
+		++pos;
+	}
 
-    return found;
+	return found;
 }
 
 /*
@@ -74,123 +74,142 @@
  */
 static bool sn_parse(const char *sn, struct sn_parsed_fields *fields)
 {
-    size_t sn_len = strlen(sn);
-    size_t field_pos = 0;
+	size_t sn_len = strlen(sn);
+	size_t field_pos = 0;
 
-    fields->authority_pos = 0;
-    fields->authority_len = 0;
-    fields->service_pos = 0;
-    fields->service_len = 0;
-    fields->version_pos = 0;
-    fields->version_len = 0;
-    fields->instance_pos = 0;
-    fields->instance_len = 0;
+	fields->authority_pos = 0;
+	fields->authority_len = 0;
+	fields->service_pos = 0;
+	fields->service_len = 0;
+	fields->version_pos = 0;
+	fields->version_len = 0;
+	fields->instance_pos = 0;
+	fields->instance_len = 0;
 
-    /* Absorb urn: if present */
-    if (memcmp("urn", &sn[field_pos], strlen("urn")) == 0) {
-        if (!find_next(sn, field_pos, sn_len, ':', &field_pos)) return false;
-    }
+	/* Absorb urn: if present */
+	if (memcmp("urn", &sn[field_pos], strlen("urn")) == 0) {
+		if (!find_next(sn, field_pos, sn_len, ':', &field_pos)) return false;
+	}
 
-    /* Check it is a service name */
-    if (memcmp("sn", &sn[field_pos], strlen("sn")) != 0) {
-        /* Not a service name */
-         return false;
-    }
+	/* Check it is a service name */
+	if (memcmp("sn", &sn[field_pos], strlen("sn")) != 0) {
+		/* Not a service name */
+		 return false;
+	}
 
-    /* Expect the authority field */
-    if (find_next(sn, field_pos, sn_len, ':', &field_pos)) {
-        fields->authority_pos = field_pos;
-        fields->authority_len = field_len(sn, field_pos, sn_len, ':');
-    }
-    else {
-        /* Missing mandatory authority field */
-        return false;
-    }
+	/* Expect the authority field */
+	if (find_next(sn, field_pos, sn_len, ':', &field_pos)) {
+		fields->authority_pos = field_pos;
+		fields->authority_len = field_len(sn, field_pos, sn_len, ':');
+	}
+	else {
+		/* Missing mandatory authority field */
+		return false;
+	}
 
-    /* Expect the service field */
-    if (find_next(sn, field_pos, sn_len, ':', &field_pos)) {
-        fields->service_pos = field_pos;
-        fields->service_len = field_len(sn, field_pos, sn_len, ':');
+	/* Expect the service field */
+	if (find_next(sn, field_pos, sn_len, ':', &field_pos)) {
+		fields->service_pos = field_pos;
+		fields->service_len = field_len(sn, field_pos, sn_len, ':');
 
-        /* Check for the optional version */
-        if (find_next(sn, field_pos, field_pos + fields->service_len, '.', &field_pos)) {
-            fields->version_pos = field_pos;
-            fields->version_len = field_len(sn, field_pos, sn_len, ':');
-        }
-    }
-    else {
-        /* Missing mandatory service field */
-        return false;
-    }
+		/* Check for the optional version */
+		if (find_next(sn, field_pos, field_pos + fields->service_len, '.', &field_pos)) {
+			fields->version_pos = field_pos;
+			fields->version_len = field_len(sn, field_pos, sn_len, ':');
+		}
+	}
+	else {
+		/* Missing mandatory service field */
+		return false;
+	}
 
-    /* Check for optional instance */
-    if (find_next(sn, field_pos, sn_len, ':', &field_pos)) {
-        fields->instance_pos = field_pos;
-        fields->instance_len = sn_len - field_pos;
-    }
+	/* Check for optional instance */
+	if (find_next(sn, field_pos, sn_len, ':', &field_pos)) {
+		fields->instance_pos = field_pos;
+		fields->instance_len = sn_len - field_pos;
+	}
 
-    return true;
+	return true;
 }
 
 bool sn_is_valid(const char *sn)
 {
-    struct sn_parsed_fields fields;
-    return sn_parse(sn, &fields);
+	struct sn_parsed_fields fields;
+	return sn_parse(sn, &fields);
 }
 
 bool sn_check_authority(const char *sn, const char *auth)
 {
-    bool matched = false;
-    struct sn_parsed_fields fields;
+	bool matched = false;
+	struct sn_parsed_fields fields;
 
-    if (sn_parse(sn, &fields) && fields.authority_len) {
+	if (sn_parse(sn, &fields) && fields.authority_len) {
 
-        matched = (memcmp(auth, &sn[fields.authority_pos], strlen(auth)) == 0);
-    }
+		matched = (memcmp(auth, &sn[fields.authority_pos], strlen(auth)) == 0);
+	}
 
-    return matched;
+	return matched;
 }
 
 bool sn_check_service(const char *sn, const char *service)
 {
-    bool matched = false;
-    struct sn_parsed_fields fields;
+	bool matched = false;
+	struct sn_parsed_fields fields;
 
-    if (sn_parse(sn, &fields) && fields.service_len) {
+	if (sn_parse(sn, &fields) && fields.service_len) {
 
-        matched = (memcmp(service, &sn[fields.service_pos], strlen(service)) == 0);
-    }
+		matched = (memcmp(service, &sn[fields.service_pos], strlen(service)) == 0);
+	}
 
-    return matched;
+	return matched;
 }
 
 unsigned int sn_get_service_instance(const char *sn)
 {
-    unsigned int instance = 0;
+	unsigned int instance = 0;
 
-    struct sn_parsed_fields fields;
+	struct sn_parsed_fields fields;
 
-    if (sn_parse(sn, &fields) && fields.instance_len) {
+	if (sn_parse(sn, &fields) && fields.instance_len) {
 
-        sscanf(&sn[fields.instance_pos], "%d", &instance);
-    }
+		/* Instance must be expressed as a decimal */
+		unsigned int multiplier = 1;
 
-    return instance;
+		for (size_t i = 0; i < fields.instance_len; i++) {
+
+			size_t digit_index = fields.instance_pos + fields.instance_len - 1 - i;
+			char digit = sn[digit_index];
+
+			if (isdigit(digit)) {
+
+			   instance += ((digit - '0') * multiplier);
+			   multiplier *= 10;
+			}
+			else {
+
+				/* Invalid instance string */
+				instance = 0;
+				break;
+			}
+		}
+	}
+
+	return instance;
 }
 
 size_t sn_read_service(const char *sn, char *buf, size_t buf_len)
 {
-    size_t field_len = 0;
+	size_t field_len = 0;
 
-    memset(buf, 0, buf_len);
-    struct sn_parsed_fields fields;
+	memset(buf, 0, buf_len);
+	struct sn_parsed_fields fields;
 
-    if (sn_parse(sn, &fields) && fields.service_len && (fields.service_len < buf_len)) {
+	if (sn_parse(sn, &fields) && fields.service_len && (fields.service_len < buf_len)) {
 
-        field_len = fields.service_len;
-        memcpy(buf, &sn[fields.service_pos], field_len);
-        buf[field_len] = '\0';
-    }
+		field_len = fields.service_len;
+		memcpy(buf, &sn[fields.service_pos], field_len);
+		buf[field_len] = '\0';
+	}
 
-    return field_len;
+	return field_len;
 }
diff --git a/components/service/locator/test/sn_tests.cpp b/components/service/locator/test/sn_tests.cpp
index 4f8630a..50cce75 100644
--- a/components/service/locator/test/sn_tests.cpp
+++ b/components/service/locator/test/sn_tests.cpp
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2020, Arm Limited and Contributors. All rights reserved.
+ * Copyright (c) 2020-2021, Arm Limited and Contributors. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
  */
@@ -54,10 +54,10 @@
     CHECK(sn_check_service(sn2, "secure-storage"));
     CHECK_EQUAL(0, sn_get_service_instance(sn2));
 
-    const char *sn3 = "sn:ffa:d9df52d5-16a2-4bb2-9aa4-d26d3b84e8c0:7";
+    const char *sn3 = "sn:ffa:d9df52d5-16a2-4bb2-9aa4-d26d3b84e8c0:77";
     CHECK(sn_check_authority(sn3, "ffa"));
     CHECK(sn_check_service(sn3, "d9df52d5-16a2-4bb2-9aa4-d26d3b84e8c0"));
-    CHECK_EQUAL(7, sn_get_service_instance(sn3));
+    CHECK_EQUAL(77, sn_get_service_instance(sn3));
 
     /* Check instance defaults to zero */
     const char *sn4 = "sn:ffa:d9df52d5-16a2-4bb2-9aa4-d26d3b84e8c0";
@@ -88,4 +88,4 @@
     CHECK_EQUAL(UUID_CANONICAL_FORM_LEN, sn_read_service(sn4, buf, sizeof(buf)));
     CHECK(memcmp(buf, "d9df52d5-16a2-4bb2-9aa4-d26d3b84e8c0", UUID_CANONICAL_FORM_LEN + 1) == 0);
     CHECK_EQUAL(UUID_CANONICAL_FORM_LEN, strlen(buf));
-}
\ No newline at end of file
+}
