title: java.lang.ArrayIndexOutOfBoundsException when getting image array
body: <p>When I try to run the following code</p>
  
  <p><strong>SampleRun.java</strong></p>
  
  <pre><code>public class SampleRun {
  
      public static void main(String[] args) {
  
          JlibFprint jlibfprint = new JlibFprint();
          JlibFprint.fp_image_data fpimg = new JlibFprint.fp_image_data();
          JlibFprint.fp_image_data fpimg1 = new JlibFprint.fp_image_data() ;
  
          try
          {
              File file = new File("/some/path/Capture.bin");    //reads the binary image file
  
              FileInputStream fin = new FileInputStream(file);
              ByteArrayOutputStream bos = new ByteArrayOutputStream();
          byte[] buff = new byte[1024];
          try
          {
              for(int i;(i = fin.read(buff)) !=-1;){
                  bos.write(buff,0,i);                
              }
          }
          catch (Exception e) {
              // TODO: handle exception
  
          }
          byte[] imgbytes = bos.toByteArray();
              if(file.length() == 327680)
          {
              h=620;
              w=512;
              l=327680;
          }
          else
          {
              h=320;
              w=256;
              l=81408;
          }
          fpimg.setData(imgbytes);
          fpimg.setHeight(h);
          fpimg.setWidth(w);
          fpimg.setLength(l);
  
             try {
              fpimg1 = JlibFprint.binary_image(fpimg);     //error at this line
              //return the object of image structure from the JNI code
                      System.out.println("image binarized\n");
          } catch (ArrayIndexOutOfBoundsException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
          }
  
          }
          catch (Exception e)
          {
              e.printStackTrace();
          }
      }
  }
  </code></pre>
  
  <p><strong>JlibFprint.java</strong></p>
  
  <pre><code>public class JlibFprint {
  
      static {
          System.loadLibrary("JlibFprint_jni");
      }    
  
      static public class fp_image_data implements java.io.Serializable{
  
          int width;
      int height;
      int length;
      byte data[];
  
  
       public int getWidth() {
          return width;
      }
  
      public void setWidth(int width) {
          this.width = width;
      }
  
      public int getHeight() {
          return height;
      }
  
      public void setHeight(int height) {
          this.height = height;
      }
  
      public int getLength() {
          return length;
      }
  
      public void setLength(int length) {
          this.length = length;
      }
  
      public byte[] getData() {
          return data;
      }
  
      public void setData(byte[] data) {
          this.data = data;
      }
  
  
  
      public fp_image_data()
      {}
  
      public void clear()
      {
          width = 0;
          height = 0;
          length = 0;
          for (int i = 0; i &lt; data.length; i++) data[i] = 0;
      }
      }
  
  }
  </code></pre>
  
  <p><strong>JNI Code</strong></p>
  
  <pre><code>JNIEXPORT jobject JNICALL Java_jlibfprint_JlibFprint_binary_1image(JNIEnv *env, jclass jcls,jobject imgobj)
  {
      struct fp_img img;
      struct fp_img *imgptr;
      imgptr = &amp;img;
      jfp2cfp(env,imgobj,imgptr);   // this function gets the value from java
      fp_init();
  
      imgptr = fp_img_binarize(imgptr);
  
      cfp2jfp(env, imgobj, imgptr);   //this function sets the value to hava
  
      fp_exit();
      printf("\nlibrary closed...........");
      return imgobj;
  }
  </code></pre>
  
  <p>i get the following error</p>
  
  <pre><code>java.lang.ArrayIndexOutOfBoundsException
  
      at jlibfprint.JlibFprint.binary_image(Native Method)
      at jlibfprint.SampleRun.main(SampleRun.java:23)
  </code></pre>
  
  <p>I am trying to use functions of <code>libfprint</code> library for image processing. I have return JNI code for accessing that library functions and also I have returned the object from JNI to java layer but at that line I am getting the error.</p>