]> git.sur5r.net Git - gsconf/blobdiff - gs105e.c
fixed typo
[gsconf] / gs105e.c
index a5b9aa60300345753050f02d0d3bcd3000ae9fae..c594e86a71839a8d85c920268a2ef3363f77d079 100644 (file)
--- a/gs105e.c
+++ b/gs105e.c
@@ -74,6 +74,8 @@ char newPacketId() {
         return (char)packetId;
 }
 
+
+
 void makeHeader(unsigned int queryType) {
         int n;
 
@@ -95,8 +97,10 @@ void makeHeader(unsigned int queryType) {
         
         memcpy(&gs105e_queryData[24], "\x4e\x53\x44\x50", 4); //Magic!! :-O
         if (settings.password != NULL && queryType == QR_EXEC) {
-        
-                addActData(GS_PASSWORD, strlen(settings.password), settings.password);
+               char tmpPassword[strlen(settings.password)];
+               for (n = 0; n < strlen(settings.password); n++)
+                       tmpPassword[n] = passwordSecret[n % 19] ^ settings.password[n]; 
+                addActData(GS_PASSWORD, strlen(settings.password), tmpPassword);
         }
         
         
@@ -382,10 +386,13 @@ int gs105e_setName(char * data) {
 }
 
 int gs105e_setPassword(char * data) {
-        makeHeader(QR_EXEC);
-        
+        int n;
+       makeHeader(QR_EXEC);
         
-        addActData(GS_NEWPASSWORD, strlen(data), data);
+        char tmpPasswd[strlen(data)];
+       for (n = 0; n < strlen(data); n++)
+               tmpPasswd[n] = data[n] ^ passwordSecret[n % 19];
+        addActData(GS_NEWPASSWORD, strlen(data), tmpPasswd);
         return gs105e_act();
 }
 
@@ -412,25 +419,42 @@ void addDiscoveredDevice(int id) {
         if (ddev == NULL) {
                 ddev = (struct gs105e_discovered *)malloc(sizeof(struct gs105e_discovered));
                 gs105e_devs = ddev;
+                ddev->next = NULL;
         }else {
                 while (ddev != NULL) {
-                        if (memcmp(ddev->mac, settings.mac, 6))
+                        if (memcmp(ddev->mac, settings.mac, 6)) {
+                                ddev = ddev->next;
                                 continue;
-                        ddev = ddev->next;
+                        }
+                        
+                        break;
                 }
+                
         }
         
         if (ddev == NULL) {
-                struct gs105e_discovered * ddev = gs105e_devs;
+                
+                ddev = gs105e_devs;
                 gs105e_devs = (struct gs105e_discovered *)malloc(sizeof(struct gs105e_discovered));
+                printf("%p\n", gs105e_devs);
+                printf("%p\n", ddev);
                 gs105e_devs->next = ddev;
                 ddev = gs105e_devs;
+                printf("%p\n", ddev);
+                
         }        
-        ddev->name = settings.name;
+        
+        printf("%p\n", ddev->name);
+        ddev->name = (char *)malloc(sizeof(char) * strlen(settings.name));
+        printf("DEBUG 1\n");
+        memcpy(ddev->name, settings.name, strlen(settings.name) + 1);
         memcpy(ddev->mac, settings.mac, 6);
+        
         memcpy(ddev->ip, settings.ip, 4);
         memcpy(ddev->gateway, settings.gateway, 4);
-        ddev->model = settings.model;
+        ddev->model = (char *)malloc(sizeof(char) * strlen(settings.model));
+        memcpy(ddev->model, settings.model, strlen(settings.model) + 1);
+        
         ddev->id = id;
         
 }
@@ -458,7 +482,9 @@ int gs105e_discover(void) {
         gs105e_query ();
         gs105e_query ();
         while (gs105e__receive() == 0) {
+                printf("DEGUB DEVICE DISCOVERED\n");
                 addDiscoveredDevice(n + 1);
+                
                 n++;
         }
         return n;