2017-08-01 75 views
0

我使用Fortify扫描我的代码后,出现“不安全的JNI(输入验证和表示,语义)”问题。我提到了Fortify的建议,并在网站上搜索了一些解决方案,但我无法解决这个问题。在Android Studio中强化扫描问题

我遵循Fortify在website推荐的兼容解决方案。 我甚至使用Fortify从网站扫描推荐的代码,并得到相同的问题。

我的代码如下所示:

public final class JNI_Related { 

// JNI 
public native FileDescriptor open(String path, int baudrate, int data_bits, char parity, int stop_bits); 

public native void close(); 

public FileDescriptor DoOpen(String mPath, int mBaudrate, int mData_bits, char mParity, int mStop_bits){ 

    if(mmPath.length() == 0){ 
     throw new NullPointerException(); 
    } 

    if((mmBaudrate < 0) || (mmData_bits < 0) || (mmStop_bits < 0) || (mmParity == 'a')){ 
     throw new IllegalArgumentException(); 
    } 
    mFd = open(mmPath, mmBaudrate, mmData_bits, mmParity, mmStop_bits); 

    if(mFd == null){ 
     throw new IllegalArgumentException(); 
    } 
    return mFd; 
} 

public void DoClose(){ 
    close(); 
} 

static { 
    System.loadLibrary("jniutill"); 
} 

}

我真的需要一些帮助!

+0

您是否曾经为此找到答案? –

回答

0

在你的本地方法,你有他们声明为public

public native FileDescriptor open(...); 
public native void close(); 

你在你的问题链接到该网站说,为了解决这个不安全JNI问题,native方法必须标记为private ,使您能够达到native方法的唯一方法是通过您的public包装方法来清理输入参数。

+0

感谢您的回复。在我将公众更改为私人后,我得到了同样的Fortify问题。 @ user1684458 –