Don't free data in krb5_data_alloc.
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@2714 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
		@@ -50,48 +50,43 @@ krb5_data_zero(krb5_data *p)
 | 
				
			|||||||
void
 | 
					void
 | 
				
			||||||
krb5_data_free(krb5_data *p)
 | 
					krb5_data_free(krb5_data *p)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  if(p->length && p->data)
 | 
					    if(p->length && p->data)
 | 
				
			||||||
    free(p->data);
 | 
						free(p->data);
 | 
				
			||||||
  p->length = 0;
 | 
					    p->length = 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
krb5_error_code
 | 
					krb5_error_code
 | 
				
			||||||
krb5_data_alloc(krb5_data *p, int len)
 | 
					krb5_data_alloc(krb5_data *p, int len)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  krb5_data_free(p);
 | 
					    p->data = malloc(len);
 | 
				
			||||||
  if (len) {
 | 
					    if(p->data == NULL)
 | 
				
			||||||
    p->data = (krb5_pointer)malloc(len);
 | 
						return ENOMEM;
 | 
				
			||||||
    if(!p->data)
 | 
					    p->length = len;
 | 
				
			||||||
      return ENOMEM;
 | 
					    return 0;
 | 
				
			||||||
  } else
 | 
					 | 
				
			||||||
    p->data = NULL;
 | 
					 | 
				
			||||||
  p->length = len;
 | 
					 | 
				
			||||||
  return 0;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
krb5_error_code
 | 
					krb5_error_code
 | 
				
			||||||
krb5_data_realloc(krb5_data *p, int len)
 | 
					krb5_data_realloc(krb5_data *p, int len)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  void *tmp;
 | 
					    void *tmp;
 | 
				
			||||||
  tmp = realloc(p->data, len);
 | 
					    tmp = realloc(p->data, len);
 | 
				
			||||||
  if(!tmp)
 | 
					    if(!tmp)
 | 
				
			||||||
    return ENOMEM;
 | 
						return ENOMEM;
 | 
				
			||||||
  p->data = tmp;
 | 
					    p->data = tmp;
 | 
				
			||||||
  p->length = len;
 | 
					    p->length = len;
 | 
				
			||||||
  return 0;
 | 
					    return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
krb5_error_code
 | 
					krb5_error_code
 | 
				
			||||||
krb5_data_copy(krb5_data *p, void *data, size_t len)
 | 
					krb5_data_copy(krb5_data *p, void *data, size_t len)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  krb5_data_free(p);
 | 
					    krb5_data_free(p);
 | 
				
			||||||
  if (len) {
 | 
					    if (len) {
 | 
				
			||||||
      p->data = (krb5_pointer)malloc(len);
 | 
						if(krb5_data_alloc(p, len))
 | 
				
			||||||
      if(!p->data)
 | 
						    return ENOMEM;
 | 
				
			||||||
	  return ENOMEM;
 | 
						memmove(p->data, data, len);
 | 
				
			||||||
      memmove(p->data, data, len);
 | 
					    } else
 | 
				
			||||||
  } else
 | 
						p->data = NULL;
 | 
				
			||||||
      p->data = NULL;
 | 
					    p->length = len;
 | 
				
			||||||
  p->length = len;
 | 
					    return 0;
 | 
				
			||||||
  return 0;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user