fix: dict.org crashes by incomplete response and str out of bound access

This commit is contained in:
shenleban tongying 2024-11-12 16:32:32 -05:00
parent 8fc71c9586
commit f59b04565a

View file

@ -538,14 +538,22 @@ void DictServerWordSearchRequest::readMatchData( QByteArray & reply )
if ( word.endsWith( '\"' ) ) { if ( word.endsWith( '\"' ) ) {
word.chop( 1 ); word.chop( 1 );
} }
if ( word[ 0 ] == '\"' ) { if ( word.startsWith( '\"' ) ) {
word = word.mid( 1 ); word = word.mid( 1 );
} }
this->addMatchedWord( word ); if ( !word.isEmpty() ) {
this->addMatchedWord( word );
}
} }
reply = this->dictImpl->socket.readLine(); constexpr int halfSecond = 500;
if ( this->dictImpl->socket.waitForReadyRead( halfSecond ) ) {
reply = this->dictImpl->socket.readLine();
}
else {
return;
}
} while ( true ); } while ( true );
} }