Merge branch 'HostServ' of ssh://git.pk910.de:16110/srvx into HostServ
[srvx.git] / src / chanserv.c
index d50c9147fbe56909b65f776179f763e99bb2ca8d..887b95aaa3c4e8ffb8b40ed44f42d253894bf04a 100644 (file)
@@ -4421,10 +4421,10 @@ static CHANSERV_FUNC(cmd_topic)
                     if(!isdigit(topic[pos]))
                         break;
                 }
-                if(advtopic_index < 0 || advtopic_index > MAXADVTOPICENTRIES)
+                if(advtopic_index < 0 || advtopic_index >= MAXADVTOPICENTRIES)
                 {
                     //invalid id!
-                    reply("CSMSG_ADVTOPIC_INVALID_ID", advtopic_index);
+                    reply("CSMSG_ADVTOPIC_INVALID_ID", advtopic_index+1);
                     return 0;
                 }
                 if(cData->advtopic[advtopic_index])
@@ -4446,7 +4446,6 @@ static CHANSERV_FUNC(cmd_topic)
                             new_topic[dpos++] = *ptr; //is % again
                             break;
                         }
-                        ptr--;
                         advtopic_index--; //no zero base
                         if(!cData->advtopic[advtopic_index])
                             break; //just leave it empty
@@ -4458,11 +4457,12 @@ static CHANSERV_FUNC(cmd_topic)
                         break;
                     case '\\': 
                         ptr++; /* and fall through */
+                        if(!*ptr) break;
                     default:
                         new_topic[dpos++] = *ptr;
+                        ptr++;
                         break;
                     }
-                    ptr++;
                 }
             } else {
                 while((tchar = topic_mask[pos++]) && (dpos <= TOPICLEN))