Categorias
Tecnologia

Ausência de um simples “&” no código causa falha grave no Chrome OS que impede o acesso aos arquivos locais

A falta de um simples caractere fez estragos no código do Chrome OS: o símbolo “&” ou a falta dele impede o acesso aos arquivos locais no sistema do Google. Foi um simples erro de digitação no código que causou a falha no sistema.

Na última segunda-feira, 19 de julho, o Google lançou uma atualização para seu sistema operacional Chrome OS, 91.0.4472.165, que rapidamente começou a causar problemas aos usuários: os impediu de fazer login em seus sistemas. O Google interrompeu imediatamente a implantação quando afetou os usuários que haviam reiniciado seus computadores após o download da nova versão.

A estes últimos só poderiam ser oferecidas soluções para recuperar o acesso ao seu sistema que inevitavelmente passava pela exclusão dos dados locais no dispositivo (reverter o dispositivo para uma versão anterior via USB, restaurar o status de fábrica ou excluir e recriar a conta do usuário).

No entanto, o interessante sobre essa atualização problemática (e, claro, já corrigida), tem a ver com o motivo da falha. Não se trata de uma corrupção de algum arquivo do sistema, nem de uma vulnerabilidade de kernel estranha e complexa. Todo o problema se resume à falta do caractere “&” no código. O estranho sobre o erro não é que tenha sido cometido, é que seus efeitos não foram detectados.

Ausência de um simples “&” no código causa falha grave no Chrome OS que impede o acesso aos arquivos locais

Ausência de um simples "&" no código causa falha grave no Chrome OS que impede o acesso aos arquivos locais

Sim, o caractere conhecido em inglês como ‘e comercial’, usado como substituto da palavra ‘e’, também é um operador fundamental na maioria das linguagens de programação. O problema com esta atualização foi causado por uma revisão de código que removeu inadvertidamente um desses operadores no seguinte snippet de código C ++:

if (key_data_.has_value() && !key_data_->label().empty())

Nada impediu a compilação do código, porque o código ainda faz sentido, mesmo alterando “&&” para “&” simplesmente, o comportamento do software varia completamente .

Assim, onde “&&” é um operador AND lógico que atua como uma forma de indicar que duas ou mais condições devem ser atendidas simultaneamente para executar uma opção, “&” torna-se um operador AND bit a bit: compara os bits um a um, se ambos forem “1” o resultado é “1”, caso contrário, “0”.

Isso significa que “&” avalia ambos os lados da operação, enquanto “&&” avalia o primeiro elemento da operação e, somente se for ‘verdadeiro’, continua e avalia o segundo elemento.

Devido a esse bug, o Chrome OS atualizado nunca conseguiu verificar corretamente as senhas dos usuários em relação às chaves armazenadas, portanto, mesmo quando as senhas corretas foram inseridas, o SO retornou a mensagem “Desculpe, não foi possível verificar sua senha”.

Resta saber como o erro pode ter acontecido ao Google: o Chrome OS, assim como o navegador Chrome, tem três canais de teste (Canary’, ‘dev’ e ‘beta’) com semanas de diferenciação de testes entre as versões, o que deve ajudar você detecta bugs tão óbvios quanto este antes de passar para o canal estável. Na verdade, um teste de unidade automatizado também deveria ter detectado.

Em qualquer caso, este é um ótimo exemplo de como os piores erros de programação podem ser causados por uma coisa tão simples como um caractere.

Via Genbeta

Por Claylson Martins

Jornalista com pós graduações em Economia, Jornalismo Digital e Radiodifusão. Nas horas não muito vagas, professor, fotógrafo, apaixonado por rádio e natureza.

Sair da versão mobile