Reino: API Abuse

Uma API é um contrato entre quem chama e o que se chama. As formas mais comuns de abuso de API ocorrem quando o responsável pela chamada não respeita sua parte do contrato. Por exemplo, se um programa não chama chdir() após chamar chroot(), ele viola o contrato que especifica como alterar o diretório raiz ativo de forma segura. Outro bom exemplo de abuso de biblioteca é esperar que o elemento chamado retorne informações confiáveis de DNS ao responsável pela chamada. Nesse caso, o responsável pela chamada abusa a API do elemento chamado ao fazer certas suposições sobre seu comportamento (isto é, que o valor de retorno pode ser usado para fins de autenticação). A outra parte também pode violar o contrato entre quem chama e o que se chama. Por exemplo, se um programador definir SecureRandom como subclasse e retornar um valor não aleatório, o contrato será violado.

Code Correctness: ToString on Array

Abstract
ToString() é chamado em um array.
Explanation
Na maioria dos casos, uma chamada para ToString() em um array indica que um desenvolvedor está interessado em retornar o conteúdo do array como um String. No entanto, uma chamada direta para ToString() em um array retornará um valor de cadeia de caracteres contendo o tipo do array.

Exemplo 1: O seguinte código gerará System.String[].

String[] stringArray = { "element 1", "element 2", "element 3", "element 4" };
System.Diagnostics.Debug.WriteLine(stringArray.ToString());
References
[1] Class Arrays Microsoft
[2] Standards Mapping - Common Weakness Enumeration CWE ID 398
desc.structural.dotnet.code_correctness_tostring_on_array
Abstract
toString() é chamado em um array.
Explanation
Na maioria dos casos, uma chamada para toString() em um array indica que um desenvolvedor está interessado em retornar o conteúdo do array como um String. No entanto, uma chamada direta para toString() em um array retornará um valor de string contendo o tipo do array e o código hash na memória.
Exemplo 1: O seguinte código gerará [Ljava.lang.String;@1232121.

String[] strList = new String[5];
...
System.out.println(strList);
References
[1] Class Arrays Sun Microsystems
[2] Standards Mapping - Common Weakness Enumeration CWE ID 398
desc.structural.java.code_correctness_tostring_on_array