summaryrefslogtreecommitdiff
authoralwin <alwin>2005-03-07 21:22:42 (UTC)
committer alwin <alwin>2005-03-07 21:22:42 (UTC)
commitca82c064ab8834546c55b29c6b2f5c922075b450 (patch) (side-by-side diff)
tree5a7a097400cfb4388c3b742d3d4f517209789740
parentb9b5ec22a5969c57a2e2b940faf42ae6f9fd74d2 (diff)
downloadopie-ca82c064ab8834546c55b29c6b2f5c922075b450.zip
opie-ca82c064ab8834546c55b29c6b2f5c922075b450.tar.gz
opie-ca82c064ab8834546c55b29c6b2f5c922075b450.tar.bz2
hostname should be filtered. Check return value of setting the hostname
and write operations.
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/networksettings/mainwindow/mainwindowimp.cpp32
1 files changed, 24 insertions, 8 deletions
diff --git a/noncore/settings/networksettings/mainwindow/mainwindowimp.cpp b/noncore/settings/networksettings/mainwindow/mainwindowimp.cpp
index 0a3312c..3222e50 100644
--- a/noncore/settings/networksettings/mainwindow/mainwindowimp.cpp
+++ b/noncore/settings/networksettings/mainwindow/mainwindowimp.cpp
@@ -5,48 +5,49 @@
#include "interfacesetupimp.h"
#include "interfaces.h"
#include "module.h"
/* OPIE */
#include <opie2/odebug.h>
#include <opie2/oprocess.h>
#include <qpe/applnk.h>
#include <qpe/qcopenvelope_qws.h>
#include <qpe/qpeapplication.h>
#include <qpe/config.h>
#include <qpe/qlibrary.h>
#include <qpe/resource.h>
/* QT */
#include <qpushbutton.h>
#include <qlistbox.h>
#include <qlineedit.h>
#include <qlistview.h>
#include <qheader.h>
#include <qlabel.h>
#include <qtabwidget.h> // in order to disable the profiles tab
#include <qmessagebox.h>
#include <qtextstream.h>
+#include <qregexp.h>
#if QT_VERSION < 0x030000
#include <qlist.h>
#else
#include <qptrlist.h>
#endif
#include <qdir.h>
#include <qfile.h>
#include <qtextstream.h>
#include <qregexp.h>
/* STD */
#include <net/if.h>
#include <sys/ioctl.h>
#include <sys/socket.h>
#define DEFAULT_SCHEME "/var/lib/pcmcia/scheme"
#define _PROCNETDEV "/proc/net/dev"
// is this always right?
#define _HOSTFILE "/etc/hostname"
#define _IRDANAME "/proc/sys/net/irda/devname"
@@ -705,71 +706,86 @@ void MainWindowImp::receive(const QCString &msg, const QByteArray &arg)
QString dest = msg.left(msg.find("("));
QCString param = msg.right(msg.length() - msg.find("(") - 1);
param = param.left( param.length() - 1 );
odebug << "dest >" << dest.latin1() << "< param >"+param+"<" << oendl;
QMap<Module*, QLibrary*>::Iterator it;
for( it = libraries.begin(); it != libraries.end(); ++it )
{
odebug << "plugin >" << it.key()->type().latin1() << "<" << oendl;
if(it.key()->type() == dest)
{
it.key()->receive( param, arg );
found = true;
}
}
if (found) QPEApplication::setKeepRunning();
else odebug << "Huh what do ya want" << oendl;
}
void MainWindowImp::setHostname()
{
- QFile f(_HOSTFILE);
+ static QRegExp filter("[^A-Za-z0-9_\\-\\.]");
+ if (filter.match(m_Nameinput->text())!=-1) {
+ odebug << "Wrong hostname" << oendl;
+ QMessageBox::critical(0, tr("Sorry"), tr("This is a wrong name.<br>Please use A-Z, a-z, _, - or a single dot."));
+ return;
+ }
- OProcess*h = new OProcess;
+ OProcess h;
_procTemp="";
- *h << "hostname" << m_Nameinput->text();
- connect(h,SIGNAL(receivedStderr(Opie::Core::OProcess*,char*,int)),this,SLOT(slotHostname(Opie::Core::OProcess*,char*,int)));
- h->start(OProcess::Block,OProcess::Stderr);
- odebug << "Got " << _procTemp << " - " << h->exitStatus() << oendl;
+ h << "hostname" << m_Nameinput->text();
+ connect(&h,SIGNAL(receivedStderr(Opie::Core::OProcess*,char*,int)),this,SLOT(slotHostname(Opie::Core::OProcess*,char*,int)));
+ h.start(OProcess::Block,OProcess::Stderr);
+ odebug << "Got " << _procTemp << " - " << h.exitStatus() << oendl;
+ if (h.exitStatus()!=0) {
+ QMessageBox::critical(0, tr("Sorry"), QString(tr("Could not set name.\n%1")).arg(_procTemp.stripWhiteSpace()));
+ return;
+ }
_procTemp="";
- delete h;
+ QFile f(_HOSTFILE);
if (f.open(IO_Truncate|IO_WriteOnly))
{
QTextStream s(&f);
s << m_Nameinput->text();
+ } else {
+ QMessageBox::critical(0, tr("Sorry"), tr("Could not save name."));
+ return;
}
+
f.close();
f.setName(_IRDANAME);
if (f.open(IO_WriteOnly))
{
QTextStream s(&f);
s << m_Nameinput->text();
+ } else {
+ QMessageBox::critical(0, tr("Sorry"), tr("Could not set infrared name."));
}
}
void MainWindowImp::initHostname()
{
OProcess h;
_procTemp="";
h << "hostname";
connect(&h,SIGNAL(receivedStdout(Opie::Core::OProcess*,char*,int)),this,SLOT(slotHostname(Opie::Core::OProcess*,char*,int)));
h.start(OProcess::Block,OProcess::AllOutput);
odebug << "Got " << _procTemp <<oendl;
- m_Nameinput->setText(_procTemp);
+ m_Nameinput->setText(_procTemp.stripWhiteSpace());
_procTemp="";
}
void MainWindowImp::slotHostname(Opie::Core::OProcess *proc, char *buffer, int buflen)
{
if (buflen < 1 || buffer==0) return;
char*_t = new char[buflen+1];
::memset(_t,0,buflen+1);
::memcpy(_t,buffer,buflen);
_procTemp+=_t;
delete[]_t;
}