summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
d5d4fc9)
Should make use-after-free in the caller less likely.
CID 66391, CID 66376.
-const char pcrs_rcs[] = "$Id: pcrs.c,v 1.44 2014/10/18 11:25:24 fabiankeil Exp $";
+const char pcrs_rcs[] = "$Id: pcrs.c,v 1.45 2014/10/18 11:27:04 fabiankeil Exp $";
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/pcrs.c,v $
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/pcrs.c,v $
* 1 : job = the pcrs_job to be executed
* 2 : subject = the subject (== original) string
* 3 : subject_length = the subject's length
* 1 : job = the pcrs_job to be executed
* 2 : subject = the subject (== original) string
* 3 : subject_length = the subject's length
- * 4 : result = char** for returning the result
+ * 4 : result = char** for returning the result (NULL on error)
* 5 : result_length = size_t* for returning the result's length
*
* Returns : On success, the number of substitutions that were made.
* 5 : result_length = size_t* for returning the result's length
*
* Returns : On success, the number of substitutions that were made.
char *result_offset;
offset = i = 0;
char *result_offset;
offset = i = 0;
/*
* Sanity check & memory allocation
*/
if (job == NULL || job->pattern == NULL || job->substitute == NULL || NULL == subject)
{
/*
* Sanity check & memory allocation
*/
if (job == NULL || job->pattern == NULL || job->substitute == NULL || NULL == subject)
{
return(PCRS_ERR_BADJOB);
}
if (NULL == (matches = (pcrs_match *)malloc((size_t)max_matches * sizeof(pcrs_match))))
{
return(PCRS_ERR_BADJOB);
}
if (NULL == (matches = (pcrs_match *)malloc((size_t)max_matches * sizeof(pcrs_match))))
{
return(PCRS_ERR_NOMEM);
}
memset(matches, '\0', (size_t)max_matches * sizeof(pcrs_match));
return(PCRS_ERR_NOMEM);
}
memset(matches, '\0', (size_t)max_matches * sizeof(pcrs_match));
if (NULL == (dummy = (pcrs_match *)realloc(matches, (size_t)max_matches * sizeof(pcrs_match))))
{
free(matches);
if (NULL == (dummy = (pcrs_match *)realloc(matches, (size_t)max_matches * sizeof(pcrs_match))))
{
free(matches);
return(PCRS_ERR_NOMEM);
}
matches = dummy;
return(PCRS_ERR_NOMEM);
}
matches = dummy;