summaryrefslogtreecommitdiff
path: root/core
authorerik <erik>2007-01-19 01:20:57 (UTC)
committer erik <erik>2007-01-19 01:20:57 (UTC)
commitf60301bab1f8aa3693089036a3791a01ae6f9db8 (patch) (side-by-side diff)
tree876aef9930a5f85762bcc17e0310921617a568da /core
parent32343107b30904806d02672955c57ed53d39fe79 (diff)
downloadopie-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.
Diffstat (limited to 'core') (more/less context) (ignore whitespace changes)
-rw-r--r--core/opie-login/loginwindowimpl.cpp25
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();
}