No changes

Fork of nRF51822 by Nordic Semiconductor

Revision:
450:e718f00626f2
Parent:
449:fd09f590751b
Child:
451:87e7f14a3fa1
--- a/source/nRF5xGattServer.cpp	Mon Nov 02 09:05:09 2015 +0000
+++ b/source/nRF5xGattServer.cpp	Mon Nov 02 09:05:09 2015 +0000
@@ -45,7 +45,6 @@
 /**************************************************************************/
 ble_error_t nRF5xGattServer::addService(GattService &service)
 {
-    /* ToDo: Make sure we don't overflow the array, etc. */
     /* ToDo: Make sure this service UUID doesn't already exist (?) */
     /* ToDo: Basic validation */
 
@@ -63,7 +62,10 @@
 
     /* Add characteristics to the service */
     for (uint8_t i = 0; i < service.getCharacteristicCount(); i++) {
-        GattCharacteristic *p_char = service.getCharacteristic(i);
+		if (characteristicCount >= BLE_TOTAL_CHARACTERISTICS) {
+			return BLE_ERROR_NO_MEM;
+		}
+		GattCharacteristic *p_char = service.getCharacteristic(i);
 
         /* Skip any incompletely defined, read-only characteristics. */
         if ((p_char->getValueAttribute().getValuePtr() == NULL) &&
@@ -108,9 +110,12 @@
         characteristicCount++;
 
         /* Add optional descriptors if any */
-        /* ToDo: Make sure we don't overflow the array */
         for (uint8_t j = 0; j < p_char->getDescriptorCount(); j++) {
-            GattAttribute *p_desc = p_char->getDescriptor(j);
+    		if (descriptorCount >= BLE_TOTAL_DESCRIPTORS) {
+    			return BLE_ERROR_NO_MEM;
+    		}
+
+			GattAttribute *p_desc = p_char->getDescriptor(j);
             /* skip the user-description-descriptor here; this has already been handled when adding the characteristic (above). */
             if (p_desc->getUUID() == BLE_UUID_DESCRIPTOR_CHAR_USER_DESC) {
                 continue;