diff options
| -rw-r--r-- | src/libirecovery.c | 12 | 
1 files changed, 8 insertions, 4 deletions
| diff --git a/src/libirecovery.c b/src/libirecovery.c index 4ed69af..c7186a0 100644 --- a/src/libirecovery.c +++ b/src/libirecovery.c @@ -822,16 +822,18 @@ void irecv_set_debug_level(int level) {  }  static irecv_error_t irecv_send_command_raw(irecv_client_t client, const char* command) { +	int ret = 0; +  	unsigned int length = strlen(command);  	if (length >= 0x100) {  		length = 0xFF;  	}  	if (length > 0) { -		int ret = irecv_control_transfer(client, 0x40, 0, 0, 0, (unsigned char*) command, length + 1, USB_TIMEOUT); +		ret = irecv_control_transfer(client, 0x40, 0, 0, 0, (unsigned char*) command, length + 1, USB_TIMEOUT);  	} -	return IRECV_E_SUCCESS; +	return ((unsigned)ret == (length + 1) ? IRECV_E_SUCCESS: IRECV_E_UNKNOWN_ERROR);  }  irecv_error_t irecv_send_command(irecv_client_t client, const char* command) { @@ -1103,7 +1105,8 @@ irecv_error_t irecv_getenv(irecv_client_t client, const char* variable, char** v  	ret = irecv_control_transfer(client, 0xC0, 0, 0, 0, (unsigned char*) response, 255, USB_TIMEOUT);  	*value = response; -	return IRECV_E_SUCCESS; + +	return (ret > 0 ? IRECV_E_SUCCESS: IRECV_E_UNKNOWN_ERROR);  }  irecv_error_t irecv_getret(irecv_client_t client, unsigned int* value) { @@ -1120,7 +1123,8 @@ irecv_error_t irecv_getret(irecv_client_t client, unsigned int* value) {  	ret = irecv_control_transfer(client, 0xC0, 0, 0, 0, (unsigned char*) response, 255, USB_TIMEOUT);  	*value = (unsigned int) *response; -	return IRECV_E_SUCCESS; + +	return (ret > 0 ? IRECV_E_SUCCESS: IRECV_E_UNKNOWN_ERROR);  }  irecv_error_t irecv_get_cpid(irecv_client_t client, unsigned int* cpid) { | 
