android-keyczar-demo icon indicating copy to clipboard operation
android-keyczar-demo copied to clipboard

IllegalArgumentException

Open EdmondChuiHW opened this issue 12 years ago • 2 comments

Not sure if it is Android specific, but testing on both 2.3.6 and 4.1.1 devices causes this Exception.

E/AndroidRuntime(10087): java.lang.IllegalArgumentException: Bad limit (capacity 57): 73 E/AndroidRuntime(10087): at java.nio.Buffer.limitImpl(Buffer.java:312) E/AndroidRuntime(10087): at java.nio.Buffer.limit(Buffer.java:303) E/AndroidRuntime(10087): at org.keyczar.Encrypter.encrypt(Encrypter.java:166) E/AndroidRuntime(10087): at org.keyczar.Encrypter.encrypt(Encrypter.java:114) E/AndroidRuntime(10087): at org.keyczar.Encrypter.encrypt(Encrypter.java:186)

EdmondChuiHW avatar Jan 30 '13 16:01 EdmondChuiHW

Do you have a test case?

kruton avatar Jan 31 '13 05:01 kruton

I found out the reason while I'm testing. When the input is an empty String, the second entry after it will cause this error.

Here is a test case, after encrypting the first empty String, encrypting "Jacob" does not have any problem, however encrypting "Sophia" will cause such Exception to be thrown. And the solution is to do an empty String test.

I believe an empty String is not a valid input for the Crypter then.

Thanks!

package com.example.keyczartest;

import org.keyczar.Crypter;
import org.keyczar.exceptions.KeyczarException;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;

import com.example.android.keyczardemo.AndroidKeyczarReader;
import com.example.android.keyczardemo.FixBrokenCipherSpiProvider;

public class MainActivity extends Activity {
    public static final String TAG = "MainActivity";
    public static String[] TEXT = {"ABCD1234", "UNKNOWN", "", "Jacob", "Sophia",
            "Mason", "Isabella", "William", "Emma", "Jayden", "Olivia", "Noah",
            "Ava", "Michael", "Emily", "Ethan", "Abigail", "", "Alexander", "",
            "Madison", "Aiden", "Mia", "Daniel", "Chloe"};

    static {
        FixBrokenCipherSpiProvider.insertIfNeeded();
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TextView textView = (TextView)findViewById(android.R.id.text1);

        try {
            Crypter crypter = new Crypter(new AndroidKeyczarReader(getResources(), "test_keys_public_dont_not_use"));

            for (String string : TEXT) {
                // Solution
                // if (TextUtils.isEmpty(string)) {
                // continue;
                // }
                Log.d(TAG, "trying to encrypt: " + string);
                textView.append(crypter.encrypt(string));
                textView.append("\n");
            }
        } catch (KeyczarException e) {
            Log.e(TAG, "WHYYYYYYYYYYYYYYY D:", e);
        }
    }
}

EdmondChuiHW avatar Jan 31 '13 16:01 EdmondChuiHW