diff options
| -rw-r--r-- | libpiano/src/xml.c | 26 | 
1 files changed, 12 insertions, 14 deletions
| diff --git a/libpiano/src/xml.c b/libpiano/src/xml.c index 463caa7..c8497be 100644 --- a/libpiano/src/xml.c +++ b/libpiano/src/xml.c @@ -45,7 +45,7 @@ static void PianoXmlIsFaultCb (const char *key, const ezxml_t value,  		void *data) {  	PianoReturn_t *ret = data;  	char *valueStr = PianoXmlGetNodeText (value); -	char *matchStart, *matchEnd, *matchStr; +	char *matchStart, *matchEnd;  	if (strcmp ("faultString", key) == 0) {  		*ret = PIANO_RET_ERR; @@ -56,36 +56,34 @@ static void PianoXmlIsFaultCb (const char *key, const ezxml_t value,  		if ((matchStart = strchr (valueStr, '|')) != NULL) {  			if ((matchStart = strchr (matchStart+1, '|')) != NULL) {  				if ((matchEnd = strchr (matchStart+1, '|')) != NULL) { -					matchStr = calloc (matchEnd - (matchStart+1)+1, -							sizeof (*matchStr)); -					memcpy (matchStr, matchStart+1, matchEnd - -							(matchStart+1)); +					/* changes text in xml node, but we don't care... */ +					*matchEnd = '\0'; +					++matchStart;  					/* translate to our error message system */ -					if (strcmp ("AUTH_INVALID_TOKEN", matchStr) == 0) { +					if (strcmp ("AUTH_INVALID_TOKEN", matchStart) == 0) {  						*ret = PIANO_RET_AUTH_TOKEN_INVALID;  					} else if (strcmp ("AUTH_INVALID_USERNAME_PASSWORD", -							matchStr) == 0) { +							matchStart) == 0) {  						*ret = PIANO_RET_AUTH_USER_PASSWORD_INVALID;  					} else if (strcmp ("LISTENER_NOT_AUTHORIZED", -							matchStr) == 0) { +							matchStart) == 0) {  						*ret = PIANO_RET_NOT_AUTHORIZED;  					} else if (strcmp ("INCOMPATIBLE_VERSION", -							matchStr) == 0) { +							matchStart) == 0) {  						*ret = PIANO_RET_PROTOCOL_INCOMPATIBLE; -					} else if (strcmp ("READONLY_MODE", matchStr) == 0) { +					} else if (strcmp ("READONLY_MODE", matchStart) == 0) {  						*ret = PIANO_RET_READONLY_MODE;  					} else if (strcmp ("STATION_CODE_INVALID", -							matchStr) == 0) { +							matchStart) == 0) {  						*ret = PIANO_RET_STATION_CODE_INVALID;  					} else if (strcmp ("STATION_DOES_NOT_EXIST", -							matchStr) == 0) { +							matchStart) == 0) {  						*ret = PIANO_RET_STATION_NONEXISTENT;  					} else {  						*ret = PIANO_RET_ERR;  						printf (PACKAGE ": Unknown error %s in %s\n", -								matchStr, valueStr); +								matchStart, valueStr);  					} -					PianoFree (matchStr, 0);  				}  			}  		} | 
