Fix NPE on missing charset in HkpKeyserverClient

Hopefully fixes #2345
This commit is contained in:
Vincent Breitmoser
2018-06-14 13:49:35 +02:00
parent 5db5db2a0c
commit 996856ddde

View File

@@ -19,6 +19,9 @@ package org.sufficientlysecure.keychain.keyimport;
import android.support.annotation.NonNull;
import okhttp3.MediaType;
import okhttp3.ResponseBody;
import org.sufficientlysecure.keychain.network.OkHttpClientFactory;
import org.sufficientlysecure.keychain.pgp.PgpHelper;
import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils;
@@ -417,11 +420,19 @@ public class HkpKeyserverClient implements KeyserverClient {
private String getResponseBodyAsUtf8(Response response) throws IOException {
String responseBody;
byte[] responseBytes = response.body().bytes();
ResponseBody body = response.body();
if (body == null) {
throw new IOException("Response from keyserver was empty");
}
try {
responseBody = new String(responseBytes, response.body().contentType().charset(UTF_8));
MediaType mediaType = body.contentType();
Charset charset = mediaType != null ? mediaType.charset(UTF_8) : UTF_8;
if (charset == null) {
charset = UTF_8;
}
responseBody = new String(body.bytes(), charset);
} catch (UnsupportedCharsetException e) {
responseBody = new String(responseBytes, UTF_8);
responseBody = new String(body.bytes(), UTF_8);
}
return responseBody;