author | spiralman <spiralman> | 2002-05-16 21:14:13 (UTC) |
---|---|---|
committer | spiralman <spiralman> | 2002-05-16 21:14:13 (UTC) |
commit | d8d70e07a09a7c50021f6c85690b79b422d43df5 (patch) (side-by-side diff) | |
tree | 56e4655aca1eac9b46f44e78e2cc378e7f7033de /noncore | |
parent | daeba256e5a7442dde237f39a6272485e01b7ccd (diff) | |
download | opie-d8d70e07a09a7c50021f6c85690b79b422d43df5.zip opie-d8d70e07a09a7c50021f6c85690b79b422d43df5.tar.gz opie-d8d70e07a09a7c50021f6c85690b79b422d43df5.tar.bz2 |
fixed segfault when socket() returns -1 (hopefully)
-rw-r--r-- | noncore/tools/remote/buttondialog.cpp | 25 | ||||
-rw-r--r-- | noncore/tools/remote/remotetab.cpp | 15 | ||||
-rw-r--r-- | noncore/tools/remote/remotetab.h | 2 |
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; }; |