summaryrefslogtreecommitdiff
path: root/noncore
authorspiralman <spiralman>2002-05-16 21:14:13 (UTC)
committer spiralman <spiralman>2002-05-16 21:14:13 (UTC)
commitd8d70e07a09a7c50021f6c85690b79b422d43df5 (patch) (side-by-side diff)
tree56e4655aca1eac9b46f44e78e2cc378e7f7033de /noncore
parentdaeba256e5a7442dde237f39a6272485e01b7ccd (diff)
downloadopie-d8d70e07a09a7c50021f6c85690b79b422d43df5.zip
opie-d8d70e07a09a7c50021f6c85690b79b422d43df5.tar.gz
opie-d8d70e07a09a7c50021f6c85690b79b422d43df5.tar.bz2
fixed segfault when socket() returns -1 (hopefully)
Diffstat (limited to 'noncore') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/tools/remote/buttondialog.cpp25
-rw-r--r--noncore/tools/remote/remotetab.cpp15
-rw-r--r--noncore/tools/remote/remotetab.h2
3 files changed, 40 insertions, 2 deletions
diff --git a/noncore/tools/remote/buttondialog.cpp b/noncore/tools/remote/buttondialog.cpp
index e7ff4b4..7479e85 100644
--- a/noncore/tools/remote/buttondialog.cpp
+++ b/noncore/tools/remote/buttondialog.cpp
@@ -89,24 +89,36 @@ QString ButtonDialog::getLabel()
QStringList ButtonDialog::getRemotes()
{
const char write_buffer[] = "LIST\n";
const char *readbuffer;
int i, numlines;
QStringList list;
addr.sun_family=AF_UNIX;
strcpy(addr.sun_path,"/dev/lircd");
fd = socket(AF_UNIX, SOCK_STREAM, 0);
+ if(fd == -1)
+ {
+ QMessageBox *mb = new QMessageBox("Error!",
+ "couldnt connect to socket",
+ QMessageBox::NoIcon,
+ QMessageBox::Ok,
+ QMessageBox::NoButton,
+ QMessageBox::NoButton);
+ mb->exec();
+ perror("ButtonDialog::GetRemotes");
+ return NULL;
+ }
if(std::connect(fd,(struct sockaddr *) &addr, sizeof(addr) ) == -1)
{
QMessageBox *mb = new QMessageBox("Error!",
"couldnt connect to socket",
QMessageBox::NoIcon,
QMessageBox::Ok,
QMessageBox::NoButton,
QMessageBox::NoButton);
mb->exec();
perror("ButtonDialog::GetRemotes");
return NULL;
@@ -149,24 +161,37 @@ QStringList ButtonDialog::getRemotes()
QStringList ButtonDialog::getButtons(const char *remoteName)
{
QString write_buffer = "LIST ";
const char *readbuffer;
int i, j, numlines;
QStringList list;
QString string;
write_buffer += remoteName;
write_buffer += '\n';
fd = socket(AF_UNIX, SOCK_STREAM, 0);
+ if(fd == -1)
+ {
+ QMessageBox *mb = new QMessageBox("Error!",
+ "couldnt connect to socket",
+ QMessageBox::NoIcon,
+ QMessageBox::Ok,
+ QMessageBox::NoButton,
+ QMessageBox::NoButton);
+ mb->exec();
+ perror("ButtonDialog::GetButtons");
+ return NULL;
+ }
+
if(std::connect(fd,(struct sockaddr *) &addr, sizeof(addr) ) == -1)
{
QMessageBox *mb = new QMessageBox("Error!",
"couldnt connect to socket",
QMessageBox::NoIcon,
QMessageBox::Ok,
QMessageBox::NoButton,
QMessageBox::NoButton);
mb->exec();
perror("ButtonDialog::GetButtons");
return NULL;
diff --git a/noncore/tools/remote/remotetab.cpp b/noncore/tools/remote/remotetab.cpp
index f3a8945..64b8ee4 100644
--- a/noncore/tools/remote/remotetab.cpp
+++ b/noncore/tools/remote/remotetab.cpp
@@ -42,34 +42,47 @@ RemoteTab::RemoteTab(QWidget *parent=0, const char *name=0):QWidget(parent,name)
channelGroup = new ChannelGroup(this);
// channelGroup->setMaximumHeight(91);
layout->addWidget(channelGroup, 0, 0);
this->setMaximumWidth(240);
timeout = 0;
addr.sun_family=AF_UNIX;
strcpy(addr.sun_path,"/dev/lircd");
}
-void RemoteTab::sendIR()
+int RemoteTab::sendIR()
{
const QObject *button = sender();
QString string = cfg->readEntry(button->name());
string+='\n';
const char *write_buffer = string.latin1();
const char *read_buffer;
bool done=false;
fd = socket(AF_UNIX, SOCK_STREAM, 0);
+ if(fd == -1)
+ {
+ QMessageBox *mb = new QMessageBox("Error!",
+ "couldnt connect to socket",
+ QMessageBox::NoIcon,
+ QMessageBox::Ok,
+ QMessageBox::NoButton,
+ QMessageBox::NoButton);
+ mb->exec();
+ perror("RemoteTab::SendIR");
+ return NULL;
+ }
+
if(std::connect(fd,(struct sockaddr *) &addr, sizeof(addr) ) == -1)
{
QMessageBox *mb = new QMessageBox("Error!",
"couldnt connect to socket",
QMessageBox::NoIcon,
QMessageBox::Ok,
QMessageBox::NoButton,
QMessageBox::NoButton);
mb->exec();
perror("RemoteTab::SendIR");
}
diff --git a/noncore/tools/remote/remotetab.h b/noncore/tools/remote/remotetab.h
index 77a7318..38b58e9 100644
--- a/noncore/tools/remote/remotetab.h
+++ b/noncore/tools/remote/remotetab.h
@@ -41,24 +41,24 @@ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#define TIMEOUT 3
class RemoteTab : public QWidget
{
Q_OBJECT
public:
RemoteTab(QWidget *parent=0, const char *name=0);
void setIRSocket(int newfd);
const char *readPacket();
void setConfig(Config *newCfg);
void updateRemotesList();
public slots:
- void sendIR();
+ int sendIR();
void remoteSelected(const QString &string);
private:
int fd;
int timeout;
struct sockaddr_un addr;
Config *cfg;
TopGroup *topGroup;
DVDGroup *dvdGroup;
VCRGroup *vcrGroup;
ChannelGroup *channelGroup;
};