2017-08-01 2 views
0

Je reçois un message «Unsafe JNI (Input Validation and Representation, Semantic)» après avoir utilisé Fortify pour analyser mon code. J'avais référé aux recommandations de Fortify et cherché une solution sur le site Web, mais je ne peux pas résoudre le problème. Je suis la solution conforme recommandée par Fortify dans ce website. J'utilise même Fortify pour scanner le code recommandé sur le site Web et obtenir le même problème.Fortifier le problème de numérisation dans Android Studio

Mon code est indiqué ci-dessous:

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"); 
} 

}

J'ai vraiment besoin d'aide!

+0

Avez-vous déjà trouvé une réponse à cette question? –

Répondre

0

Dans vos méthodes natives, vous les avez déclarés comme public:

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

Le site vous lié à votre question, dit que pour résoudre le problème Unsafe JNI, les méthodes native doivent être marqués comme private Le seul moyen de parvenir à la méthode native consiste à utiliser la méthode d'encapsulation public qui désinfecte les paramètres d'entrée.

+0

Merci pour votre réponse. J'ai eu le même problème avec Fortify après avoir changé de public à privé. @ user1684458 –