From: Robert Haas Date: Wed, 30 Mar 2022 19:53:08 +0000 (-0400) Subject: Fix possible NULL-pointer-deference in backup_compression.c. X-Git-Tag: REL_15_BETA1~366 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8e053dc6dfbee4ae412e98ad73cfd4662d7453ac;p=thirdparty%2Fpostgresql.git Fix possible NULL-pointer-deference in backup_compression.c. Per Coverity and Tom Lane. Reviewed by Tom Lane and Justin Pryzby. Discussion: http://postgr.es/m/384291.1648403267@sss.pgh.pa.us --- diff --git a/src/common/backup_compression.c b/src/common/backup_compression.c index 969e08cca20..867f2f2eb5e 100644 --- a/src/common/backup_compression.c +++ b/src/common/backup_compression.c @@ -191,8 +191,16 @@ parse_bc_specification(bc_algorithm algorithm, char *specification, if (value != NULL) pfree(value); - /* If we got an error or have reached the end of the string, stop. */ - if (result->parse_error != NULL || *kwend == '\0' || *vend == '\0') + /* + * If we got an error or have reached the end of the string, stop. + * + * If there is no value, then the end of the keyword might have been + * the end of the string. If there is a value, then the end of the + * keyword cannot have been the end of the string, but the end of the + * value might have been. + */ + if (result->parse_error != NULL || + (vend == NULL ? *kwend == '\0' : *vend == '\0')) break; /* Advance to next entry and loop around. */