**/
void gnutls_x509_tlsfeatures_deinit(gnutls_x509_tlsfeatures_t f)
{
- gnutls_free(f->features);
gnutls_free(f);
}
return gnutls_assert_val(GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE);
}
- *feature = f->features[idx].feature;
+ *feature = f->feature[idx];
return 0;
}
for (i=0;i<feat->size;i++) {
found = 0;
for (j=0;j<cfeat->size;j++) {
- if (feat->features[i].feature == cfeat->features[j].feature) {
+ if (feat->feature[i] == cfeat->feature[j]) {
found = 1;
break;
}
}
if (found == 0) {
- _gnutls_debug_log("feature %d was not found in cert\n", (int)feat->features[i].feature);
+ _gnutls_debug_log("feature %d was not found in cert\n", (int)feat->feature[i]);
uret = 0;
goto cleanup;
}
{
char nptr[ASN1_MAX_NAME_SIZE];
int result;
- void * tmp;
unsigned i, indx, j;
unsigned int feature;
return GNUTLS_E_CERTIFICATE_ERROR;
}
+ if (f->size >= sizeof(f->feature)/sizeof(f->feature[0])) {
+ gnutls_assert();
+ return GNUTLS_E_INTERNAL_ERROR;
+ }
+
/* skip duplicates */
for (j=0;j<f->size;j++) {
- if (f->features[j].feature == feature) {
+ if (f->feature[j] == feature) {
skip = 1;
break;
}
if (!skip) {
indx = f->size;
- tmp = gnutls_realloc(f->features, (f->size + 1) * sizeof(f->features[0]));
- if (tmp == NULL) {
- return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR);
- }
- f->features = tmp;
-
- f->features[indx].feature = feature;
+ f->feature[indx] = feature;
f->size++;
}
}
goto cleanup;
}
- ret = _gnutls_x509_write_uint32(c2, "?LAST", f->features[i].feature);
+ ret = _gnutls_x509_write_uint32(c2, "?LAST", f->feature[i]);
if (ret != GNUTLS_E_SUCCESS) {
gnutls_assert();
goto cleanup;
**/
int gnutls_x509_tlsfeatures_add(gnutls_x509_tlsfeatures_t f, unsigned int feature)
{
- void * tmp;
-
if (f == NULL) {
gnutls_assert();
return GNUTLS_E_INVALID_REQUEST;
}
- if (feature > UINT16_MAX) {
- gnutls_assert();
- return GNUTLS_E_INTERNAL_ERROR;
- }
+ if (feature > UINT16_MAX)
+ return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST);
- tmp = gnutls_realloc(f->features, (f->size + 1) * sizeof(f->features[0]));
- if (tmp == NULL) {
- return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR);
- }
- f->features = tmp;
- f->features[f->size++].feature = feature;
+ if (f->size >= sizeof(f->feature)/sizeof(f->feature[0]))
+ return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR);
+
+ f->feature[f->size++] = feature;
return 0;
}