author | erik <erik> | 2007-01-19 01:20:57 (UTC) |
---|---|---|
committer | erik <erik> | 2007-01-19 01:20:57 (UTC) |
commit | f60301bab1f8aa3693089036a3791a01ae6f9db8 (patch) (side-by-side diff) | |
tree | 876aef9930a5f85762bcc17e0310921617a568da /core | |
parent | 32343107b30904806d02672955c57ed53d39fe79 (diff) | |
download | opie-f60301bab1f8aa3693089036a3791a01ae6f9db8.zip opie-f60301bab1f8aa3693089036a3791a01ae6f9db8.tar.gz opie-f60301bab1f8aa3693089036a3791a01ae6f9db8.tar.bz2 |
core/opie-login/loginwindowimpl.cpp has a fix to properly free strings
that were dup'ed.
noncore/apps/opie-reader/Bkmks.cpp deletes a temporary pointer that
was not being properly disposed of.
-rw-r--r-- | core/opie-login/loginwindowimpl.cpp | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/core/opie-login/loginwindowimpl.cpp b/core/opie-login/loginwindowimpl.cpp index 547a9b3..b9a286d 100644 --- a/core/opie-login/loginwindowimpl.cpp +++ b/core/opie-login/loginwindowimpl.cpp @@ -180,80 +180,97 @@ void LoginWindowImpl::quit ( ) } void LoginWindowImpl::suspend ( ) { ODevice::inst ( )-> suspend ( ); QCopEnvelope e("QPE/System", "setBacklight(int)"); e << -3; // Force on } void LoginWindowImpl::backlight ( ) { QCopEnvelope e("QPE/System", "setBacklight(int)"); e << -2; // toggle } class WaitLogo : public QLabel { public: WaitLogo ( ) : QLabel ( 0, "wait hack!", WStyle_Customize | WStyle_NoBorder | WStyle_Tool ) { setPixmap( Opie::Core::OResource::loadPixmap( "launcher/new_wait" ) ); setAlignment ( AlignCenter ); move ( 0, 0 ); resize ( qApp-> desktop ( )-> width ( ), qApp-> desktop ( )-> height ( )); m_visible = false; show ( ); } virtual void showEvent ( QShowEvent *e ) { QLabel::showEvent ( e ); m_visible = true; } virtual void paintEvent ( QPaintEvent *e ) { QLabel::paintEvent ( e ); if ( m_visible ) qApp-> quit ( ); } private: bool m_visible; }; void LoginWindowImpl::login ( ) { - const char *user = ::strdup ( m_user-> currentText ( ). local8Bit ( )); - const char *pass = ::strdup ( m_password-> text ( ). local8Bit ( )); + char *const user = ::strdup ( m_user-> currentText ( ). local8Bit ( )); + char *pass = ::strdup ( m_password-> text ( ). local8Bit ( )); - if ( !user || !user [0] ) + if ( !user ) { + if ( pass ) + free( pass ); return; - if ( !pass ) + } + if ( !user [0] ) { + free( user ); + if ( pass ) + free( pass ); + return; + } + bool passwordIsEmpty = false; + if ( !pass ) { + passwordIsEmpty = true; pass = ""; + } if ( lApp-> checkPassword ( user, pass )) { + if ( !passwordIsEmpty ) + free(pass); Config cfg ( "opie-login" ); cfg. setGroup ( "General" ); cfg. writeEntry ( "LastLogin", user ); cfg. write ( ); lApp-> setLoginAs ( user ); // Draw a big wait icon, the image can be altered in later revisions m_input-> hideInputMethod ( ); new WaitLogo ( ); // WaitLogo::showEvent() calls qApp-> quit() } else { QMessageBox::warning ( this, tr( "Wrong password" ), tr( "The given password is incorrect." )); m_password-> clear ( ); + free( user ); + if ( !passwordIsEmpty ) + free( pass ); } } void LoginWindowImpl::showPasswordDialog() { PasswordDialogImpl dia( this ); dia.showMaximized(); dia.exec(); } |